1

我有 360 个 3D-nifti 文件,我想读取所有这些文件并使用Nifti Analyze 工具保存到一个 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。有人可以看看,让我知道我哪里错了吗?

4

1 回答 1

2

按照您编写它的方式,您的循环被覆盖 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')
于 2017-01-19T13:53:15.753 回答