error " Assignment has fewer non singleton rhs dimensions than non singleton subscripts"
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
emar
el 1 de Jun. de 2017
Comentada: emar
el 2 de Jun. de 2017
Hello, I have 2 arrays that represent indexes of a matrix, for example idx =[ 1 5 ] and idy = [ 2 3] . When I execute this line
M(idx,idy)=1; % M is a matrix
all the components M(1,2) M(1,3) M(5,2) and M(5,3) are affected . What can I do so that only M(1,2) and M(5,3) become equal to 1 ? ( without any loop)
N.B : I used sub2ind (size(M),idx,idy) but it's slow in my case ( not this example) because the matrix M is bigger.
Thank you in advance
0 comentarios
Respuesta aceptada
Stephen23
el 1 de Jun. de 2017
Editada: Stephen23
el 1 de Jun. de 2017
M(sub2ind(size(M),idx,idy)) = 1
@Elkhanssaa Marsali: you just edited your question to add this line "I used sub2ind (size(M),idx,idy) but it's slow in my case"
Well, using sub2ind is one solution, otherwise you could use a loop. It does not matter if you want a faster solution, those are the solutions for your problem. Well, I guess this is one answer that will never get accepted :)
2 comentarios
John D'Errico
el 1 de Jun. de 2017
sub2ind is the correct solution for the problem as posed.
I see it was added that sub2ind was too slow. That suggests that the OP is either using a sparse matrix and trying to add elements (which will be SLOW, DON'T do it that way!) or they are growing the matrix over time, adding elements outside the current range of indexes. DON'T do that either!
So don't grow matrices. (There are tricks to avoid this.) Don't stuff elements into a sparse matrix. (Instead, learn to use sparse matrix tools.)
The question of why sub2ind was too slow depends on what they are doing.
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrices and 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!