How to set elements in 2D matrix based on a given vector?

Hi,
I have a zeros array [0 0 0;0 0 0;0 0 0] and a vector [3;1;2]. I want to have an array [0 0 1;1 0 0;0 1 0]. Is it possible to do that using only indexing and slicing instead of for-loop? Thanks.

 Accepted Answer

x = zeros(3);
y = [3;1;2];
x(sub2ind(size(x),1:size(x,1),y')) = 1;

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!