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

4 Ansichten (letzte 30 Tage)
Mushahid Shamim
Mushahid Shamim am 31 Jan. 2018
Kommentiert: Jan am 1 Feb. 2018
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 ]

Akzeptierte Antwort

Jan
Jan am 31 Jan. 2018
A = [2, 4, 5];
B = zeros(10, 3);
idx = sub2ind(size(B), A, 1:3);
B(idx) = 1;
  4 Kommentare
Jos (10584)
Jos (10584) am 1 Feb. 2018
this seems to be a new question ...
Jan
Jan am 1 Feb. 2018
@Jos: I assume, Mushahid means the "1:3" from "sub2ind(size(B), A, 1:3)".

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

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

Jos (10584)
Jos (10584) am 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))

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by