How to map a value of a vector into column number of a matrix?

3 views (last 30 days)
let A=[2;4;5] vector I want a matrix where all the values will be zero and the 2nd 4th and 5th element of column of 10x3 matrix will be 1.
B=[0 0 0
1 0 0
0 0 0
0 1 0
0 0 1
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0 ]

Accepted Answer

Jan
Jan on 31 Jan 2018
A = [2, 4, 5];
B = zeros(10, 3);
idx = sub2ind(size(B), A, 1:3);
B(idx) = 1;
  4 Comments
Jan
Jan on 1 Feb 2018
@Jos: I assume, Mushahid means the "1:3" from "sub2ind(size(B), A, 1:3)".

Sign in to comment.

More Answers (2)

Andrei Bobrov
Andrei Bobrov on 1 Feb 2018
n = numel(A);
B = accumarray([A(:),(1:n)'],1,[10,n]);

Jos (10584)
Jos (10584) on 1 Feb 2018
A fast and easy one-liner from the old days, when accumarray did not exist :)
A = [2 ; 4 ; 5]
B = full(sparse(A, 1:numel(A), 1, 10, 3))

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!