卢家峰课程系列-- advanced rs-fmri analysis 3/6 SPM batch修改

卢家峰课程系列-- advanced rs-fmri analysis 3/6 SPM batch修改


文章目录

  • 卢家峰课程系列-- advanced rs-fmri analysis 3/6 SPM batch修改
  • 前言
  • 一、生成.mat文件
  • 二、修改.mat文件
    • 2.变量的结果


前言

做批处理的时候,用代码的方法可以避免点选每个subject文件夹的繁琐,但需要习惯matlab的语法。


一、生成.mat文件

Show .m Code
卢家峰课程系列-- advanced rs-fmri analysis 3/6 SPM batch修改_第1张图片

复制bath code browser中的代码,在matlab的命令行中粘贴后,workspace中自动生成一个1*i cell的matlabbatch (i取决于建立了几个run batch)
卢家峰课程系列-- advanced rs-fmri analysis 3/6 SPM batch修改_第2张图片

matlabbatch右键可以save成一个.mat的文件。生成的.mat文件和在batch界面保存的.mat文件是一样的。

二、修改.mat文件

*每一个subject资料夹的要一致,此代码需要每个subject中有RESTING和T1两个文件夹。

matlab的代码:

%% select root folder with all subject's directories
dirname=uigetdir;
dirinfo=dir(firname); #读取资料夹中的list
dirinfo(1:2)=[];把前两个元素丢掉,赋值空矩阵

%% pick the subject's folder
targetdir={};#命名一个空矩阵
for i=1:length(dirinfo)
 if dirinfo(i).isdir==1 #第i个元素所存的资料夹label是1,则end
    targetdir=[targetdir,[dirname filesep dirinfo(i).name]]; #若上一步判断出是一个资料夹,则记录该资料夹的名称,即某个subject文件夹的完整路径;并进行矩阵堆叠;filesep等同于'\'
 end
end

%% identify the rsfMRI data within the RESTING folders
for i=1:length(dirinfo)
  targetfMRI{i}={};
  fMRIpath=[targetdir{i} '\''RESTING''\'];#进入某一个subjecti的RESTING文件夹
          =[targetdir{i} filesep'RESTING'filesep];#另一种写法:自动识别斜线形式,mac和windows不一样
  filrlist=dir([fMRIpath'f*.img']) #将读取出的f开头的.img结尾的文件赋值给filelist变量
  for j=1:length(filelist)
  targetfMRI{1}=[targetfMRI{1};[fMRIpath filelist(j).name',1']];#完整路径赋值到targetfMRI
  end
  
%% identify the T1 data within the T1 folders 
  targetT1{i}={}; #同样读取T1数据
  T1path=[targetdir{i} filesep'T1'filesep];
  filrlist=dir([T1path's*.img']) 
  for j=1:length(filelist)
  targetT1{1}=[targetT1{1};[T1path filelist(j).name',1']];
  end
end

%% create matlab batch file
for i=1:length(targetdir)
   原始代码部分
   第一个input--indir改为 targetdir(i);
   第二个input--innift改为  targetfMRI{i};
   第三个input--innift改为  targetT1{i};
end

最后将生成的.mat文件load到batch中,可以检查代码是否改写成功

2.变量的结果

targetdir
subject folder的绝对路径

filelist
一个包含了所有原始fmri数据的变量,以f开头.mat结尾

targetfMRI
1*i的cell,包含了i个subject的所有j个的fMRI原始data
卢家峰课程系列-- advanced rs-fmri analysis 3/6 SPM batch修改_第3张图片

targetT
1*i的cell,包含了i个subject的所有j个的T1原始data

你可能感兴趣的:(MRI数据分析,batch,matlab,开发语言)