1D series to 2D stacked

조회 수: 2 (최근 30일)
Eduardo Santos
Eduardo Santos 2018년 11월 26일
댓글: Eduardo Santos 2018년 11월 27일
Hi,
I`m trying to think in a best option to "convert" a 1d arrays to a 2d as follows:
B has a fixed size of 10000x(a prior know number, here 6), so it just need to stack number 1's regarding the number into the aray A.
A =
1 5 3 1 2 4
B =
....
....
....
0 1 0 0 0 0
0 1 0 0 0 1
0 1 1 0 0 1
0 1 1 0 1 1
1 1 1 1 1 1 % ROW 1
It can be done maniulating the arrays in a slow way, I would like to do much faster.
Thanks
  댓글 수: 2
Kevin Chng
Kevin Chng 2018년 11월 27일
Hi,
to stack number 1's regarding the number into the aray A?Do you mind to elaborate the relationship between A and B?
Walter Roberson
Walter Roberson 2018년 11월 27일
Kevin, read the output B from the bottom upwards. The first column has one 1, which is the same number as A(1). The second column has five 1, which is the same number as A(2). And so on. So if you were to sum(B) then you would get A, with it always being the last so-many entries that are set to 1.

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2018년 11월 27일
편집: Stephen23 2018년 11월 27일
In one line:
B = A>=(10000:-1:1).'
Or for versions prior to R2016b:
B = bsxfun(@ge,A,(10000:-1:1).');
  댓글 수: 2
Walter Roberson
Walter Roberson 2018년 11월 27일
Note: This requires R2016b or later
Eduardo Santos
Eduardo Santos 2018년 11월 27일
Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2018년 11월 27일
t = fliplr(1 : 10000);
B = t.' <= A;
This requires R2016b or later. For earlier releases, change the B line to
B = bsxfun(@le, t.', A);

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by