Repeat row of a matrix

1 次查看(过去 30 天)
dan berkowitz
dan berkowitz 2017-10-22
评论: Cedric 2017-10-23
Hi,
I have a 3x1 array, a = [1 2 3]', and B, a 3x2 matrix.
How can I create C, a 6x2 matrix, whose first row is the same as B and repeated once [a(1)], the second row is the second row of B repeated twice [a(2)], and the third row is the third row of B repeated three times [(a(3)]? I'm trying to use the repelem function but am a bit stuck...Do I have to loop to do this, or is there another way?
Any help would be appreciated. Thx in advance,
DB

采纳的回答

Cedric
Cedric 2017-10-22
Here is one way to achieve it. If
>> a = [1;2;3] ;
>> B = randi( 10, 3, 2 )
B =
3 10
6 2
10 10
Then
>> C = arrayfun( @(k)repelem(B(k,:),a(k),1), 1:numel(a), 'UniformOutput', false ) ;
>> C = vertcat( C{:} )
C =
3 10
6 2
6 2
10 10
10 10
10 10

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by