How can I set specific Elements of a Matrix to zero without a for loop
3 views (last 30 days)
Show older comments
Immanuel Roßteutscher
on 2 Jun 2015
Edited: Andrei Bobrov
on 2 Jun 2015
Here is my problem:
o= ones(3,3) % Given Matrix
o =
1 1 1
1 1 1
1 1 1
i = [1 2 2]; % column index of o, which should be set to zero
% quantity of rows in o is always exactly the same like length(i)
The result after manipulating matrix o depending on i should be:
o =
0 1 1
1 0 1
1 0 1
My simple solution
for k=1:length(i)
o(k,i(k))=0;
end
How can i do that without a for loop. In fact, the number of rows of matrix o is 10 000.
Thank you very much!
0 Comments
Accepted Answer
Andrei Bobrov
on 2 Jun 2015
Edited: Andrei Bobrov
on 2 Jun 2015
o= ones(3,3);
ii = [1 2 2];
[m,n] = size(o);
o(sub2ind([m,n],(1:m)',ii(:)')) = 0;
other way
n = 3;
out = ~accumarray([(1:n)',ii(:)],1,[3,3]) + 0;
More Answers (0)
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!