如何使用MATLAB将{n}文件保存到一个nii文件中

时间:2017-01-19 09:59:23

标签: matlab multiple-files nifti

我有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。 有人可以看看,让我知道我错在哪里吗?

1 个答案:

答案 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')