У меня есть 360 файлов 3D-nifti, я хочу прочитать все эти файлы и сохранить в один файл nifti с помощью Nifti Analyze tool, который должен дать 4D-файл большого размера. До сих пор я написал следующие строкиКак сохранить nii-файлы в один файл nii с помощью MATLAB
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 структуры и содержит все изображения. Тем не менее, myfile.nii - это всего лишь один файл, а не все его изображения, так как его размер равен 6 Мб, он должен быть по крайней мере одним 1 гб. Может кто-нибудь, пожалуйста, посмотрите и сообщите мне, где я ошибаюсь?
Я пробовал раньше, и я получаю сообщение об ошибке, связанной с struct в строке save_nii. Ошибка: «Ссылка на поле для нескольких элементов структуры, за которой следуют дополнительные ссылочные блоки, является ошибкой». Я думаю, это потому, что в temp есть два элемента .img, а другой - .hdr. Можете ли вы прокомментировать это? Любые обходные пути? – Vendetta
Он решается путем вызова make_nii и save_nii вне цикла, например. Loop: у (:,:,:, я) = х (я) .img конец температура = make_nii (у) save_nii (температура, 'myfile.nii') Спасибо за подсказку. – Vendetta
@ Vendetta Извините, вы только что видели свой комментарий со вчерашнего дня. Да, вы правы, вам придется создавать файл с помощью 'make_nii' вне цикла. Я обновил ответ, соответственно, – Suever