Creating a 3D array from 2D array

12 次查看(过去 30 天)
x = 121 x 27
y = 121 x 27
z = 121 x 27
I need to create a 3D array from these 2D arrays as following:
xyz= 121 x 3 x 27
where rows equal 121 ; columns equal 3 ( x(1,1) y(1,1) z(1,1) , x(2,1) y(2,1) z(2,1), ... x(n,1) y(n,1) z(n,1), x(1,2) y(1,2) z(1,2), ... x(1,n) y(1,n) z(1,n) ) ; slices equal 27.

采纳的回答

Dave B
Dave B 2021-11-3
You can use the cat command for this:
x=rand(121,27);
y=rand(121,27);
z=rand(121,27);
xyz=cat(3,x,y,z);
size(xyz)
ans = 1×3
121 27 3
Or you can initialize a 3-D matrix and stick your 2-D matrices in:
xyz2=nan([size(x) 3]);
xyz2(:,:,1)=x;
xyz2(:,:,2)=y;
xyz2(:,:,3)=z;
isequal(xyz,xyz2) % just to confirm that both methods do the same thing
ans = logical
1
  3 个评论
Dave B
Dave B 2021-11-3
编辑:Dave B 2021-11-3
Sorry I missed the bit about the order, if you don't want to do the permute bit you can alter the second method to:
x=rand(121,27);
y=rand(121,27);
z=rand(121,27);
xyz = nan([size(x,1) 3 size(x,2)]);
xyz(:,1,:)=x;
xyz(:,2,:)=y;
xyz(:,3,:)=z;
size(xyz)
ans = 1×3
121 3 27

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by