如何使用 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')
我有 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')