フィルターのクリア

Extend a matrix by extending its vectors

2 ビュー (過去 30 日間)
f10w
f10w 2014 年 5 月 29 日
コメント済み: f10w 2014 年 5 月 30 日
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.
  2 件のコメント
José-Luis
José-Luis 2014 年 5 月 29 日
What makes you thing it's slow because of the loop? Not all loops are evil. It would depend on what your extend() function looks like.
f10w
f10w 2014 年 5 月 30 日
Hmm, because using a loop is slow in general (but I may be wrong :P).

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

採用された回答

Andrei Bobrov
Andrei Bobrov 2014 年 5 月 29 日
B = A(kron((1:d)',ones(d,1)),:,:);
  1 件のコメント
f10w
f10w 2014 年 5 月 30 日
Thanks, Andrei. That answers my question.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by