我有360个3D-nifti文件,我想阅读所有这些文件并使用Nifti Analyze tool保存到一个nifti文件中,该文件应该生成一个大尺寸的4D文件。到目前为止,我已经写了以下几行
clear all;
clc;
fileFolder=fullfile(pwd, '\functional');
files=dir(fullfile(fileFolder, '*.nii'));
fileNames={files.name};
for i=1:length(fileNames)
fname=fullfile(fileFolder,fileNames{i});
z(i)=load_nii(fname);
y=z(i).img;
temp(:,:,:,i) = make_nii(y);
save_nii(temp(:,:,:,i), 'myfile.nii')
fprintf('Iter: %d\n', i)
end
此代码便于使用4D结构的变量temp并包含所有图像。但是,myfile.nii只是一个单独的文件,它不是所有的图像,因为它的大小只有6mb,它至少应该是1gb。 有人可以看看,让我知道我错在哪里吗?
答案 0 :(得分:1)
你编写它的方式,你的循环是覆盖 myfile.nii
,因为你每次只通过最新数据循环调用save_nii
。您只想在循环外调用save_nii
一次,并立即保存整个temp
变量。
for k = 1:numel(fileNames)
fname = fullfile(fileFolder, fileNames{k});
z(k) = load_nii(fname);
y(:,:,:,k) = z(k).img;
end
% Create the ND Nifti file
output = make_nii(y);
% Save it to a file
save_nii(output, 'myfile.nii')