Subscripted assignment dimension mismatch. error is coming in array(k,1)=su; pls help me out??thanks 4 any help
조회 수: 2 (최근 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개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!