Reputation: 35
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
Upvotes: 0
Views: 275
Reputation: 114786
have you looked at ndgrid
?
[A2 A1 A3 A4] = ndgrid(x2, x1, x3, x4);
Notice how A1
and A2
are ordered according to x2
and x1
due to the slight difference in functionality between ndgrid
and meshgrid
.
Upvotes: 1