MATLAB: Extend a matrix by extending its vectors

matrixmatrix manipulationvector

I have an d*m*n matrix A (interpretation: for each n, there are m vectors of dimension d). I would like to extend each d-dimensional vector as follows:
Consider a vector of dimension d: (1,2,…,d) (it's (x_1,x_2,…,x_n) but I removed the 'x_' for simplicity). The goal is to extend v to obtain a d*d vector of the form:
(1,1,…,1,2,…,2,…,d,d,…,d)
There are several ways to extend a single vector, as already suggested here. Suppose that a function called 'extend' does that job. Then, to extend every vector in the matrix A, we can do:
B = zeros(d*d,m,n);
for i = 1:n
for j = 1:m
B(:,j,i) = extend(A(:,j,i);
end
end
However, this is quite slow because of the loop. Could anybody please suggest me a fast way to do that?
Thank you in advance for your help.

Best Answer

B = A(kron((1:d)',ones(d,1)),:,:);