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

4 visualizzazioni (ultimi 30 giorni)
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 ]

Risposta accettata

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

Accedi per commentare.

Più risposte (2)

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

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

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by