Replicate and rotate in 4D

Hi all,
Let X1, X2, X3, X4 be row vectors of size [1xN1], [1xN2], [1xN3] and [1xN4] respectively. I would like to replicate and rotate these row vectors to obtain 4 corresponding 4D arrays A1, A2, A3 and A4 with size [N1xN2xN3xN4]. X1 corresponds the 1st dimension of A1, X2 corresponds the 2nd dimension of A2, X3 corresponds the 3rd dimension of A3, and X4 corresponds the 4th dimension of A4. For example, I can obtain A1 and A2 as follows
A1=repmat(X1',[1 N2 N3 N4]);
A2=repmat(X2,[N1 1 N3 N4]);
A3 can be obtained with the following "amateur" code
A3Temp=repmat(X3,[N2 1 N1]); % [N2xN3xN1] array
A3TempRot=rot90_3D_2t(A3Temp,2,3,1,1); % Rotate 2 times to obtain [N1xN2xN3] array
A3=repmat(A3TempRot,[1 1 1 N3]);
For A4, I do not know how to do. After that, I would like to rotate these arrays to obtain [N4xN2xN3xN1] arrays. Do you have any idea about this? Thank you in advance for your help.
Tuan

 採用された回答

Walter Roberson
Walter Roberson 2013 年 6 月 3 日

0 投票

Have a look at
[A1, A2, A3, A4] = ndgrid(X1, X2, X3, X4);
Also see permute()

1 件のコメント

Tuan
Tuan 2013 年 6 月 3 日
Thank you all for your prompt reply. I completely forgot ndgrid function. It seems that ndgrid can answer for both "replicate" and "permute". In fact, to transform X1, X2, X3, X4 into [N4xN1xN2xN3] arrays, we can use [A4,A1,A2,A3]=ndgrid(X4,X1,X2,X3).

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeSpline Postprocessing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by