Subscripted assignment dimension mismatch. error is coming in array(k,1)=su; pls help me out??thanks 4 any help
4 次查看(过去 30 天)
显示 更早的评论
su=0;k=1;
array=zeros(size(p,1),2);
j=1;
while(1)
for i=j:size(p,1)
if i>size(p,1)-1
array(k,1)=1;
array(k,2)=p(i,2);
break;
end
if p(i,2)==p(i+1,2)
su=su+p(i,1);
else
break
end
end
su=su+p(i,1);
array(k,1)=su;
array(k,2)=p(i,2);
j=i+1;
k=k+1;
su=0;
end
0 个评论
采纳的回答
Walter Roberson
2013-4-25
We do not know size(p)
If p starts out empty then size(p,1) would be 0, and
for i = j:size(p,1)
would be for i = 1:0 which would leave i as being []. Then p(i,1) would be p([],1) which would be []; su = su + p(i,1) would be su = su + [] and that makes su = []. array(k,1) = su then becomes a dimension mismatch
3 个评论
Walter Roberson
2013-4-26
When i reaches size(p,1), then j gets set to size(p,1)+1, and then the
for i=j:size(p,1)
becomes
for i=size(p,1)+1:size(p,1)
which does not execute the "for i" loop body and leaves i=[]. Then after the body of the for loop, the su=su+p(i,1) becomes su=su+p([],1) which get you su=[], leading to the failure on the next line.
Base problem: you do not have any "break" out of the "while(1)" loop so you eventually get past the end of p.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!