"Kronecker" of varying dimensions?

Hi, I have a matrix A of dimension m x n and a vector b of natural numbers with dimension m x 1. I want to obtain a matrix C of dimension (b(1)+...+b(m)) x n by vertically stacking each A(i,:) b(i) times. For example:
A=[1 2 3; 4 5 6; 7 8 9];
b=[2; 1; 4];
I want to obtain
C=[1 2 3; 1 2 3; 4 5 6; 7 8 9; 7 8 9; 7 8 9; 7 8 9];
I cannot use loops.

 Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 27 Nov 2013
Edited: Azzi Abdelmalek on 27 Nov 2013
A=[1 2 3; 4 5 6; 7 8 9]
b=[2; 1; 4]
out=cell2mat(arrayfun(@(x) repmat(A(x,:),b(x),1),(1:size(A,1))','un',0))

More Answers (0)

Categories

Find more on Linear Algebra in Help Center and File Exchange

Asked:

MRC
on 27 Nov 2013

Edited:

on 27 Nov 2013

Community Treasure Hunt

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

Start Hunting!