concat of 3d mat files in a folder

1 次查看(过去 30 天)
i have 20 3d mat files in a folder and i have different sizes for each ex: 512*1024*128 668*512*64 512*512*49 etc all i need is to load these data then resize the first two dimensions to 512*512 and to make one mat file for all can anyone help me please
  5 个评论
Jan
Jan 2018-6-5
If you want to use a loop, how are the wanted files recognized? We cannot guess, which 20 files you want. But a meaningful example code must contain a method to determine the files. So please reveal the details.
khaled alsaih
khaled alsaih 2018-6-6
i have 20 (3d) images 7 images have the size of 512*1024*128 and 7 images have the size of 668*512*64 and 6 images have the size of 512*512*241 i want to load the data in the directory then resize all images to 512*512 then cocatenate them in one mat file

请先登录,再进行评论。

采纳的回答

Jan
Jan 2018-6-5
With a loop:
Folder = 'C:\Your\Path'; % Adjust the path to your needs
List = dir(fullfile(Folder, '*.mat'));
C = cell(size(List));
for k = 1:numel(List)
Data = load(fullfile(Folder, List(k).name));
M = Data.??? % Unfortunately you do not reveal what in the MAT files is.
% Perhaps:
% M = Data.Value;
C{k} = imresize(M, [512, 512]); % See KSSV's answer
end
Result = cat(3, C{:});
save('Output.mat', 'Result');

更多回答(1 个)

KSSV
KSSV 2018-6-5
A = rand(512,1024,128) ;
B = rand(668,512,64) ;
C = rand(512,512,49) ;
Ai = imresize(A,[512,512]) ;
Bi = imresize(B,[512,512]) ;
Ci = imresize(C,[512,512]) ;
iwant = cat(3,Ai,Bi,Ci) ;
  2 个评论
khaled alsaih
khaled alsaih 2018-6-5
No need to make rand I have the data already And I have many mat files so I want to make a for loop to read the mat files then resize them Then concat Thanks a lot for your answer
Jan
Jan 2018-6-5
KSSV used rand to produce some example data.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by