SPM/编程简介
外观
< SPM
SPM 维基教科书已移至 https://www.fil.ion.ucl.ac.uk/spm/docs/ |
本页旨在提供一个快速入门指南,用于使用 SPM 作为库编写您自己的 MATLAB 脚本和函数。SPM 编程可能意味着简单地 编写批处理脚本 以自动化常见的流程,编写简短的辅助脚本或函数来完成有用的任务,编写您自己的 SPM 扩展,甚至修改您本地安装的 SPM。
MATLAB 是一种由 MathWorks 开发的编程语言。
- MATLAB 和 MathWorks 在维基百科上的页面
- 维基教科书上的 MATLAB
网上有很多 MATLAB 教程
也有一些有用的书籍
MATLAB 课程
SPM 在源文件的头文件中提供了丰富的开发者文档。要查看函数的文档,请打开相应的源文件或从 MATLAB 命令行调用 help function
。请确保 SPM 文件夹位于 MATLAB 的搜索路径中。
spm_vol
- 头文件信息spm_read_vols
- 用于读取整个体积(另请参阅:spm_vol
)spm_slice_vol
- 用于任意平面spm_sample_vol
- 任何体素spm_get_data
(spm_sample_vol
) - 来自多个体积的任何体素spm_bsplins
(spm_bsplinc
) - 注意spm_slice_vol
和spm_sample_vol
提供多项式或 sinc 插值;这些函数提供spm_reslice
中使用的 b 样条插值
spm_write_vol
(spm_vol
)spm_create_vol
spm_write_plane
nifti
(@nifti/Contents
,@nifti/create
)file_array
(@file_array/Contents
)
spm_get_space
- 获取体素世界映射矩阵(刚性或仿射变换,使用齐次坐标)spm_imatrix
- 将上述矩阵转换为参数化形式spm_matrix
- 将参数向量转换为仿射矩阵spm_check_orientations
spm_realign
spm_coreg
(spm_reslice
)spm_affreg
spm_reslice
- 需要参考图像;有关重新切片到指定几何形状的信息,请参阅以下内容reorient
(resize_img
) - 可从 John's Gems 2 和 3 中获得
spm_preproc
(spm_config_preproc
,spm_prep2sn
,spm_preproc_write
) - SPM5 的统一分割和归一化spm_normalise
- SPM5 之前的旧版非统一空间归一化spm_segment
- SPM5 之前的旧版非统一组织分割spm_smooth
spm_imcalc
- 对体积执行任意计算(低级函数)spm_imcalc_ui
-spm_imcalc
的高级便利包装器
spm_ancova
(spm_reml_ancova
) - SPM 本身没有使用,但通常对于脚本编写或教育目的很有用
spm_check_registration
(spm_image
,spm_orthviews
) - 无处不在的三个正交视图slover
- 贯穿图像的切片,阈值或原始统计数据的叠加;另请参阅 slice_overlayspm_mip_ui
(spm_mip
) - 最大强度投影或玻璃脑图像
spm_defaults
spm_get_defaults
spm_select
spm_jobman
这是一个更简单(但更占内存)的旧版Gem。有关逐平面读取和写入的示例,请参见SPM8 版本的 gem。
fnm = spm_select(1, 'image'); [pth, bnm, ext] = spm_fileparts(fnm); VI = spm_vol(fnm); VO = VI; % copy input info for output image VO.fname = fullfile(pth, [bnm '_zn' ext]); img = spm_read_vols(VI); img(isnan(img)) = 0; % use ~isfinite instead of isnan to replace +/-inf with zero spm_write_vol(VO,img);
另请参见