Filling a vector with ones based on a given value

9 visualizaciones (últimos 30 días)
Nikolas Spiliopoulos
Nikolas Spiliopoulos el 8 de Mayo de 2020
Comentada: Ameer Hamza el 8 de Mayo de 2020
HI all again,
I have one vector A and a matrix B:
Vector A has integers values from 0 to 6, A=[0 1 3 2 0 4 5 2 1 6]' (column vector, 10 values)
Matrix B has size 10 X 6, where in each row the element of A is split into ones, until the A(i) value is reached
for example B would be like that B=[0 0 0 0 0 0;1 0 0 0 0 0;1 1 1 0 0 0;....]
Is there any quick way to do it, avoiding multiple "if'?
thanks a lot,
Nikolas

Respuesta aceptada

Ameer Hamza
Ameer Hamza el 8 de Mayo de 2020
Editada: Ameer Hamza el 8 de Mayo de 2020
A = [0 1 3 2 0 4 5 2 1 6].';
M = repmat(1:6, numel(A), 1) <= A;
Result
>> M
M =
10×6 logical array
0 0 0 0 0 0
1 0 0 0 0 0
1 1 1 0 0 0
1 1 0 0 0 0
0 0 0 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 0 0 0 0
1 0 0 0 0 0
1 1 1 1 1 1
It gives a logical matrix. To get a numeric matrix
M = M*1;
  2 comentarios
Nikolas Spiliopoulos
Nikolas Spiliopoulos el 8 de Mayo de 2020
thanks a lot,
It's what I want, and it's much quicker than what I tried!
thanks!!
Ameer Hamza
Ameer Hamza el 8 de Mayo de 2020
I am glad to be of help.

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 8 de Mayo de 2020
Editada: Matt J el 8 de Mayo de 2020
B=(A(:)>=1:6)

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by