make a logical matrix from an available array of numbers.

3 visualizaciones (últimos 30 días)
Furqan Haider
Furqan Haider el 8 de Oct. de 2014
Comentada: Guillaume el 8 de Oct. de 2014
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.

Respuesta aceptada

Guillaume
Guillaume el 8 de Oct. de 2014
cols = 1:numel(A);
B = zeros(max(A), numel(A));
B(sub2ind(size(B), A, cols)) = 1
  2 comentarios
Furqan Haider
Furqan Haider el 8 de Oct. de 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 el 8 de Oct. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by