如何在没有GUI的情况下用SPM分割脑组织?

问题描述:

我们试图用SPM分割脑组织类型,并且几乎不可能在网上找到如何在不使用GUI的情况下调用其基础matlab函数。如何在没有GUI的情况下用SPM分割脑组织?

一些资源,我发现这并没有帮助:

+0

您正在使用哪个版本的SPM? – Dan

+0

@Dan我正在运行spm 12 – Leo

+1

有关批处理在SPM中的文档不够完整;然而,一个好的方法是使用GUI来设置示例分析,然后获取生成的m代码的视图(在GUI菜单中有一个选项)。 –

我的同事向我展示了如何调用SPM功能,如果你知道如何做他们的图形用户界面。转到GUI并从菜单中选择保存脚本。这导致了下面的代码在两个不同的文件进行分割:

job.m

matlabbatch{1}.spm.spatial.preproc.channel.vols = {'c:\test.nii,1'}; 
matlabbatch{1}.spm.spatial.preproc.channel.biasreg = 0.001; 
matlabbatch{1}.spm.spatial.preproc.channel.biasfwhm = 60; 
matlabbatch{1}.spm.spatial.preproc.channel.write = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(1).tpm = {'C:\Program Files\spm12\tpm\TPM.nii,1'}; 
matlabbatch{1}.spm.spatial.preproc.tissue(1).ngaus = 1; 
matlabbatch{1}.spm.spatial.preproc.tissue(1).native = [1 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(1).warped = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(2).tpm = {'C:\Program Files\spm12\tpm\TPM.nii,2'}; 
matlabbatch{1}.spm.spatial.preproc.tissue(2).ngaus = 1; 
matlabbatch{1}.spm.spatial.preproc.tissue(2).native = [1 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(2).warped = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(3).tpm = {'C:\Program Files\spm12\tpm\TPM.nii,3'}; 
matlabbatch{1}.spm.spatial.preproc.tissue(3).ngaus = 2; 
matlabbatch{1}.spm.spatial.preproc.tissue(3).native = [1 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(3).warped = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(4).tpm = {'C:\Program Files\spm12\tpm\TPM.nii,4'}; 
matlabbatch{1}.spm.spatial.preproc.tissue(4).ngaus = 3; 
matlabbatch{1}.spm.spatial.preproc.tissue(4).native = [1 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(4).warped = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(5).tpm = {'C:\Program Files\spm12\tpm\TPM.nii,5'}; 
matlabbatch{1}.spm.spatial.preproc.tissue(5).ngaus = 4; 
matlabbatch{1}.spm.spatial.preproc.tissue(5).native = [1 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(5).warped = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(6).tpm = {'C:\Program Files\spm12\tpm\TPM.nii,6'}; 
matlabbatch{1}.spm.spatial.preproc.tissue(6).ngaus = 2; 
matlabbatch{1}.spm.spatial.preproc.tissue(6).native = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.tissue(6).warped = [0 0]; 
matlabbatch{1}.spm.spatial.preproc.warp.mrf = 1; 
matlabbatch{1}.spm.spatial.preproc.warp.cleanup = 1; 
matlabbatch{1}.spm.spatial.preproc.warp.reg = [0 0.001 0.5 0.05 0.2]; 
matlabbatch{1}.spm.spatial.preproc.warp.affreg = 'mni'; 
matlabbatch{1}.spm.spatial.preproc.warp.fwhm = 0; 
matlabbatch{1}.spm.spatial.preproc.warp.samp = 3; 
matlabbatch{1}.spm.spatial.preproc.warp.write = [0 0]; 

runjob.m

nrun = 1; 
jobfile = {'c:\job.m'}; 
jobs = repmat(jobfile, 1, nrun); 
inputs = cell(0, nrun); 
for crun = 1:nrun 
end 
spm('defaults', 'FMRI'); 
spm_jobman('run', jobs, inputs{:}); 

你可以有一个脚本编辑job.m文件,然后运行job.m文件。