make a logical matrix from an available array of numbers.

3 visualizzazioni (ultimi 30 giorni)
i get an array of numbers in which minimum number is 1 and maximum number is 7 , total elements in that array are 6, e.g.
A=[2 5 6 2 7 4]
I want to make a logical matrix of order 7*6 in such a way that there is only one '1' in each column and all other entries of that column are '0'. Now the numbers in array A indicate the row number at which binary '1' is to be placed. e.g. for above provided array, my logical matrix would be:
b =
0 0 0 0 0 0
1 0 0 1 0 0
0 0 0 0 0 0
0 0 0 0 0 1
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0
kindly generalize me this program. for any random array 'A'.
Thank you.

Risposta accettata

Guillaume
Guillaume il 8 Ott 2014
cols = 1:numel(A);
B = zeros(max(A), numel(A));
B(sub2ind(size(B), A, cols)) = 1
  2 Commenti
Furqan Haider
Furqan Haider il 8 Ott 2014
if there is no 7 in array A, then your code gives me 6*6 matrix, which I dont want. I need 7*6 matrix at any cost, whether there is 7 in the array or not.
Kindly suggest, and thank you.
Guillaume
Guillaume il 8 Ott 2014
Well, it's trivial to modify my example. Replace 2nd line with:
B = zeros(7,6);
You could have worked that out for yourself.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Resizing and Reshaping 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