I have this error "In an assignment A(I) = B, the number of elements in B and I must be the same."
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
pranith kumar
el 29 de Abr. de 2016
Comentada: Walter Roberson
el 30 de Abr. de 2016
My code is like
I=zeros(1,5);
for i=1:4
[ma,I(i)]=max(areas);
end
Error: "In an assignment A(I) = B, the number of elements in B and I must be the same." [ma,I(i)]=max(areas); the second argument y in [x,y]=max(a) is a single element and I am trying to send single element only right?
0 comentarios
Respuesta aceptada
Walter Roberson
el 29 de Abr. de 2016
max() of a 2D array results in a vector, not a scalar. The indices of that would not fit in the single location I(i)
You should be asking yourself why you are doing the same thing in every iteration of the loop. max(areas) is not going to change in the loop.
Why are you allocating 5 locations but only looping to 4?
2 comentarios
pranith kumar
el 29 de Abr. de 2016
Editada: Walter Roberson
el 30 de Abr. de 2016
Walter Roberson
el 30 de Abr. de 2016
Your area variable is becoming a 2D array at some point.
Just before that section of code, add
assert(isscalar(areas), 'areas is unexpectedly array %s', str2num(size(areas)));
Más respuestas (1)
Guillaume
el 29 de Abr. de 2016
If areas is anything but a vector or scalar, then the return values of max are not scalar. See:
areas = magic(3)
[ma, l] = max(areas)
If you want the max of the whole matrix:
[ma, l(i)] = max(areas(:));
Note that in that case l(i) is the linear index of the max location.
1 comentario
Ver también
Categorías
Más información sobre Multidimensional Arrays 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!