Filling a vector with ones based on a given value

5 ビュー (過去 30 日間)
Nikolas Spiliopoulos
Nikolas Spiliopoulos 2020 年 5 月 8 日
コメント済み: Ameer Hamza 2020 年 5 月 8 日
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

採用された回答

Ameer Hamza
Ameer Hamza 2020 年 5 月 8 日
編集済み: Ameer Hamza 2020 年 5 月 8 日
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 件のコメント
Nikolas Spiliopoulos
Nikolas Spiliopoulos 2020 年 5 月 8 日
thanks a lot,
It's what I want, and it's much quicker than what I tried!
thanks!!
Ameer Hamza
Ameer Hamza 2020 年 5 月 8 日
I am glad to be of help.

サインインしてコメントする。

その他の回答 (1 件)

Matt J
Matt J 2020 年 5 月 8 日
編集済み: Matt J 2020 年 5 月 8 日
B=(A(:)>=1:6)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by