Creating a 3D array from 2D array

12 Ansichten (letzte 30 Tage)
sermet OGUTCU
sermet OGUTCU am 3 Nov. 2021
Bearbeitet: Dave B am 3 Nov. 2021
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.

Akzeptierte Antwort

Dave B
Dave B am 3 Nov. 2021
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 Kommentare
Dave B
Dave B am 3 Nov. 2021
Bearbeitet: Dave B am 3 Nov. 2021
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
sermet OGUTCU
sermet OGUTCU am 3 Nov. 2021
Dear @Dave B,
Thanks a lot for the solution.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by