我想在matlab的循环中使用spm_select来选择多个nifti文件。但是,似乎循环无法正确运行。
在每个主题文件夹中(subjList = {'2','3','6',...}中总共18个主题,每个主题文件夹中有4个运行(在runList = {'run1'中,'run2','run3','run4'}。在每次运行中,有254个nitfi文件可供选择。spm_select的使用类似于:
tmp = spm_select('expand',fullfile(SCAN_dir, 'SCAN.nii'));
tmp = cellstr(tmp(6:180,:));
当我的代码如下时
if preprocess == 1
disp('------Preprocessing started------');
for subj = subjList
disp(strcat('Subject: ',subj));
clear matlabbatch;
cd(dataDir);
cd(char(strcat(dataDir,subj)));
files = {};
funFiles = {};
filename = {};
func = {};
for i = 1: length(runList)
files{i} = char(strcat(dataDir,subj,'/',runList{i}));
filename{i} = dir(fullfile(files{i}, '*.nii'));
funFiles{i} = strcat(filename{i}.folder,'/',filename{i}.name);
%read multiple nii files
func{i} = spm_select('expand',funFiles{i});
func{i} = cellstr(func{i}(1:254,:));
end;
funFiles = funFiles';
func = func';
preprocessing_job(funFiles);
end;
disp('------Preprocessing ended------');
end;
当脚本在spm_select句子之前运行时,一切都很好。但是,当完全运行这部分代码时,会出现以下错误:
使用read_hdr时出错(第36行)
读取头文件“ /”时出错。
nifti错误(第26行)
vol = read_hdr(fname);
错误spm_select> spm_select_get_nbframes(第268行)
N = nifti(文件);
错误spm_select> spm_select_expand(第254行)
n = spm_select_get_nbframes(ifiles {i});
错误spm_select(第130行)
varargout {1} = spm_select_expand(varargin {2});
错误main_analysis_script(第40行)
func {i} = spm_select('expand',funFiles {i});
我想知道有关“ read_hdr”的第一个错误的原因。头文件有问题吗?该功能文件为4D nifti格式。 尽管我对SPM软件包了解更多,但我还是matlab的新手。 我正在使用SPM12和MatlabR2018b。有人可以帮我循环或SPM句子吗?非常感谢,等待您的留言。