0
360の3D-Niftiファイルがあります。これらのファイルをすべて読み込み、大きいサイズの4Dファイルを生成するNifti Analyze toolを使用してniftiファイルに保存します。今まで私は以下の行を書いていますMATLABを使用してniiファイルを1つのniiファイルに保存するには
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は、そのサイズがちょうど6メガバイトであるため、すべてのイメージではなく、1つの単一ファイルです。少なくとも1ギガバイトでなければなりません。 誰かが見て、私が間違っている場所を教えてもらえますか?あなたが最新のデータのみでループを通るたびにsave_nii
を呼んでいるので、
前に試したところ、save_nii行の構造体に関するエラーが発生しました。エラーは '複数の構造要素のフィールド参照に続き、より多くの参照ブロックがエラーです'というエラーです。これは、一時的な1つの.imgと2つの要素が.hdrであるためです。 これにコメントしていただけますか?回避策はありますか? – Vendetta
ループの外でmake_niiとsave_niiを呼び出すことによって解決されます。 ループ: Y(:、:、:、I)= xで(i)はは* .img 端TEMP = make_nii(Y) save_nii(TEMP、 'myfile.nii')手がかりのため おかげ。 – Vendetta
@Vendetta申し訳ありませんが、昨日からあなたのコメントを見ました。はい、そうです。ループの外側で 'make_nii'を使ってファイルを作成する必要があります。私はそれに応じて答えを更新しました – Suever