How can I change the values of multiple points in a matrix?
I have a matrix that is [500x500]. I have another matrix that is [2x100] that contains coordinate pairs that could be inside the first matrix. I would like to be able to change all the values of the first matrix to zero, without a loop.
mtx = magic(500);
co_ords = [30,50,70; 30,50,70];
mtx(co_ords) = 0;
Solution 1:
You can do this using the function SUB2IND to convert your pairs of subscripts into a linear index:
mtx(sub2ind(size(mtx),co_ords(1,:),co_ords(2,:))) = 0;
Solution 2:
Another answer:
mtx(co_ords(1,:)+(co_ords(2,:)-1)*500)=0;