Subscripted assignment dimension mismatch. error is coming in array(k,1)=su; pls help me out??thanks 4 any help
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Walter Roberson
el 25 de Abr. de 2013
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 comentarios
Walter Roberson
el 26 de Abr. de 2013
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!