Replicate and rotate in 4D

2 次查看(过去 30 天)
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
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 个)

类别

Help CenterFile Exchange 中查找有关 Array Geometries and Analysis 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by