matlab 一个错误 怎么修改

学习 时间:2026-04-04 20:54:18 阅读:1940
matlab 一个错误 怎么修改clc,cleara=[3 21 55 44 70 83 117 99 610 214 017 314 612 910 127 142 166 1811 1715 1219 922 521 027 915 1915 1420 1721 1324 2025 1628 185 1217 1625 79 209 1530 12];a1=[1.501.802.551.200.851.303.202.301.401.501.102.701.802.800.601.500.801.500.801.401.201.801.401.602.601.002.001.002.101.201.901.303.201.202.501.30];%a1为各个站点的垃圾量a2=[];%a2中的aij 为第i个节点到第j个节点两者垃圾重量之和for n=1:36a2(n,1)=a1(n);endfor i=1:36for j=2:36a2(i,j)=a1(i)+a1(j);endenda2;x=a(:,1);y=a(:,2);plot(x,y,'*')grid onset(gca,'xTick',(0:30))set(gca,'yTick',(0:20))for i=1:36s1(i)=a(i,1)+a(i,2);ends1for m=1:20hang=find(s1==max(s1));%找到距离最远的点的下标if length(hang)>1&max(s1)~=0hang=hang(1);end%从最远点开始拉垃圾 然后寻找下一个距离最远点最近的 并且在它左下方的点k=1;a3(1,1)=hang;%用a3来放已近找到的点s1(hang)=0;%将已经用过的点在s1中置为0d=zeros(1,36);t=a1(hang);for n=1:35x=a(hang,1);y=a(hang,2);for i=1:36if a(i,1)6continue;elseif length(hang)==1&max(d)~=0k=k+1;a3(m,k)=hang;s1(hang)=0;endendendenda3

最佳回答

孤独的蓝天

等待的奇异果

2026-04-04 20:54:18

Subscripted assignment dimension mismatch。Error in baidu (line 101)a3(1,1)=hang;%用a3来放已近找到的点是说这个错误?其实就是维数不对,hang可能不是一个数字,可能是一个矩阵。因为你的代码下面这一句:if length(hang)>1&max(s1)~=0 hang=hang(1);end%从最远点开始拉垃圾 然后寻找下一个距离最远点最近的 并且在它左下方的点k=1;a3(1,1)=hang;%用a3来放已近找到的点你给hang赋值为hang(1)是有条件的,条件不满足的时候hang就不是一个数字而是一个矩阵,事实上你输出s1就会发现,max(s1)==0,这样hang就不会是一个数字了,具体你的要求我不大明了,要改的话可以考虑把这个判断语句改一改。就帮你到这了 再问: 其实a3(m,k)=hangif length(hang)>1&max(s1)~=0 hang=hang(1);end 当时怕hang不为一个数 所以才有上面的代码 然而当hang 不满足上面的式子的时候 是不是s1中的所有元素已经全部置为0了呢请教高手到底该怎么修改才能达到将s1中所有元素 逐渐放入a3 然后s1中元素 逐渐变为0 再答: 首先第一个问题。反例:当length(hang)=1且max(s1)=1时,它不满足这个式子,故s1中并非所有元素置0。故式子不对,建议不要第一个判断条件,即改成max(s1)~=0,这样就对了。原因自己思考思考至于第二个问题,你是说这?if length(hang)==1&max(d)~=0 k=k+1; a3(m,k)=hang; s1(hang)=0;end这是对的。先把前面的好好改改再试试吧

最新回答共有2条回答

  • 醉熏的大船
    回复
    2026-04-04 20:54:18

    Subscripted assignment dimension mismatch。Error in baidu (line 101)a3(1,1)=hang;%用a3来放已近找到的点是说这个错误?其实就是维数不对,hang可能不是一个数字,可能是一个矩阵。因为你的代码下面这一句:if length(hang)>1&max(s1)~=0 hang=hang(1);end%从最远点开始拉垃圾 然后寻找下一个距离最远点最近的 并且在它左下方的点k=1;a3(1,1)=hang;%用a3来放已近找到的点你给hang赋值为hang(1)是有条件的,条件不满足的时候hang就不是一个数字而是一个矩阵,事实上你输出s1就会发现,max(s1)==0,这样hang就不会是一个数字了,具体你的要求我不大明了,要改的话可以考虑把这个判断语句改一改。就帮你到这了 再问: 其实a3(m,k)=hangif length(hang)>1&max(s1)~=0 hang=hang(1);end 当时怕hang不为一个数 所以才有上面的代码 然而当hang 不满足上面的式子的时候 是不是s1中的所有元素已经全部置为0了呢请教高手到底该怎么修改才能达到将s1中所有元素 逐渐放入a3 然后s1中元素 逐渐变为0 再答: 首先第一个问题。反例:当length(hang)=1且max(s1)=1时,它不满足这个式子,故s1中并非所有元素置0。故式子不对,建议不要第一个判断条件,即改成max(s1)~=0,这样就对了。原因自己思考思考至于第二个问题,你是说这?if length(hang)==1&max(d)~=0 k=k+1; a3(m,k)=hang; s1(hang)=0;end这是对的。先把前面的好好改改再试试吧

上一篇 take up the good and give up the

下一篇 急..中学生英语作文,(暑假即将到来.你打算去澳大利亚旅游.写一篇80子左右的短文,)