如何使用spm_select在matlab中读取多个nifti文件?

时间:2018-12-24 10:19:06

标签: matlab for-loop nifti spm

  

我想在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句子吗?非常感谢,等待您的留言。

0 个答案:

没有答案