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

1 次查看(过去 30 天)
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 ]

采纳的回答

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

请先登录,再进行评论。

更多回答(2 个)

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

Jos (10584)
Jos (10584) 2018-2-1
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))

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by