Filling a vector with ones based on a given value

8 Ansichten (letzte 30 Tage)
Nikolas Spiliopoulos
Nikolas Spiliopoulos am 8 Mai 2020
Kommentiert: Ameer Hamza am 8 Mai 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

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 8 Mai 2020
Bearbeitet: Ameer Hamza am 8 Mai 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 Kommentare
Nikolas Spiliopoulos
Nikolas Spiliopoulos am 8 Mai 2020
thanks a lot,
It's what I want, and it's much quicker than what I tried!
thanks!!
Ameer Hamza
Ameer Hamza am 8 Mai 2020
I am glad to be of help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 8 Mai 2020
Bearbeitet: Matt J am 8 Mai 2020
B=(A(:)>=1:6)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by