Creating a 3D array out of multiple 2D arrays

I have 10 masks that are 256 x 256 each. These masks are for 10 respective slices, so I want to combine them and make a 3D array ( 256x256x10). How do I do this? Ideas? Thanks!

 Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 13 Feb. 2012

10 Stimmen

cat(3,mask1,mask2,...)
doc cat %for more info

2 Kommentare

Safwana Razak
Safwana Razak am 22 Mär. 2021
hi, what if i got > 100 array in 3rd array, how to automate it?
cat(3,mask1,.....mask100)
Revise your code so it doesn't create 100 individual variables. Preallocate the array to be the desired size from the start and fill it in.
A = magic(4);
B = repmat(A, [1 1 5]); % or
C = zeros(4, 4, 5);
for k = 1:5
B(:, :, k) = A^k;
C(:, :, k) = A^k;
end

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Med_Imager
Med_Imager am 13 Feb. 2012

3 Stimmen

You can also do
Mask_3D(:,:,1)=Mask_1
for index=1:10
eval(['Mask_3D(:,:,index)=Mask_' num2str(index)';']);
end
Kris Hoffman
Kris Hoffman am 20 Jul. 2020

1 Stimme

I just had this exact problem (even with the same dimensions)
If the masks are all in one cell array,
A = cat(3,YourMaskArrayHere{:})
Produces a 256x256x10 uint16 array.

Community Treasure Hunt

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

Start Hunting!

Translated by