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

How do I save nii files into one nii file using MATLAB

我有 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

此代码有助于使用变量 temp,该变量是 4D 结构并包含所有图像。然而,myfile.nii 只是一个文件,它不是所有图像,因为它的大小只有 6mb,它应该至少是一个 1gb。 有人可以看看并告诉我哪里错了吗?

你写的方式,你的循环是覆盖 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')