SPM中文教程 汇总(已整理)
SpaceClaim.中文教程

SpaceClaim 联机帮助和支持Table Of Contents1. 简介 (6)2. 使用入门 (7)2.1 教程 (7)2.1.1 概述 (7)2.1.2 支架和旋钮教程 (8)2.1.3 涡轮教程 (23)2.2 SpaceClaim 界面 (23)2.2.1 概述 (23)2.2.2 结构树 (25)2.2.3 图层 (26)2.2.4 选择 (28)2.2.5 组 (29)2.2.6 选项 (30)2.2.7 属性 (30)2.2.8 SpaceClaim 快捷方式 (31)2.2.9 鼠标操作 (33)2.3 设计 (34)2.4 二维和三维设计模式 (36)2.5 草绘 (37)2.6 选择 (40)2.7 拉动 (43)2.8 移动 (47)2.9 在横截面中编辑 (51)2.10 组合和分割 (52)2.11 SpaceClaim 对象 (55)2.12 使用部件 (56)2.13 获得帮助 (58)3. 设计 (60)3.1 概述 (60)3.2 二维和三维设计模式 (61)3.3 草绘 (62)3.4 在横截面中编辑 (66)3.5 在三维模式中编辑 (67)3.6 剪切、复制和粘贴 (69)3.7 尺寸 (70)3.8 分离 (73)3.9 撤消和重做操作 (74)3.10 移动手柄 (74)3.11 草绘 (75)3.11.1 概述 (75)3.11.2 编辑草图 (79)3.11.3 复制草图 (80)3.11.4 草图栅格 (80)3.11.5 移动草图栅格 (81)3.11.6 布局 (82)3.11.7 在二维模式中移动 (83)3.11.8 通过尺寸草绘 (84)3.11.9 点 (85)3.11.10 直线 (86)3.11.11 切线 (87)3.11.12 参考线 (88)3.11.13 矩形 (89)3.11.14 三点矩形 (90)3.11.15 圆 (91)3.11.16 三点圆 (91)3.11.17 参考圆 (92)3.11.18 椭圆 (93)3.11.19 相切弧 (94)3.11.20 扫掠弧 (95)3.11.21 三点弧 (96)3.11.22 多边形 (97)3.11.23 样条曲线 (98)3.11.24 分割直线 (100)3.11.25 修剪直线 (101)3.11.26 创建角 (101)3.11.27 创建圆角 (102)3.11.28 偏置直线 (103)3.11.29 投影到草图栅格上 (104)3.11.30 弯曲 (105)3.12 编辑 (105)3.12.1 概述 (105)3.12.2 选择对象 (107)3.12.3 拉动 (115)3.12.4 移动 (142)3.12.5 填充 (150)3.12.6 替换表面 (155)3.12.7 按过渡编辑表面 (157)3.12.8 移动草图栅格 (159)3.13 相交 (159)3.13.1 概述 (159)3.13.2 组合和分割 (160)3.13.3 分割实体 (172)3.13.4 分割表面 (174)3.13.5 投影到实体 (176)3.14 插入 (177)3.14.1 概述 (177)3.14.2 插入部件 (178)3.14.3 插入图像 (178)3.14.4 插入平面 (179)3.14.5 插入轴 (181)3.14.6 插入参考轴系 (182)3.14.7 创建圆柱体 (183)3.14.8 创建球 (184)3.14.9 创建壳体 (185)3.14.10 创建偏置 (186)3.14.11 创建镜像 (187)3.14.12 插入临时对象 (189)3.15 装配部件 (190)3.15.1 概述 (190)3.15.2 使用部件 (191)3.15.3 对齐表面 (194)3.15.4 对齐轴 (194)3.15.5 将部件定向 (195)3.16 测量和分析 (195)3.16.1 概述 (195)3.16.2 显示质量 (196)3.16.3 显示测量值 (197)3.16.4 显示表面栅格 (198)4. 细节设计 (199)4.1 概述 (199)4.2 注释 (200)4.2.1 概述 (200)4.2.2 创建注释 (201)4.2.3 设定注释文本格式 (204)4.2.4 创建注释指引线 (205)4.2.5 创建尺寸注释 (206)4.2.6 形位公差注释 (208)4.2.7 基准符号 (210)4.2.8 表面光洁度符号 (211)4.2.9 中心标记和中心线 (212)4.2.10 螺纹 (213)4.2.11 表格 (213)4.3 图纸 (215)4.3.1 概述 (215)4.3.2 设置图纸 (216)4.3.3 设定图纸格式 (217)4.3.4 视图 (218)4.4 三维标记 (223)4.4.1 概述 (223)4.4.2 创建三维标记幻灯片 (225)4.4.3 显示更改过的尺寸 (225)4.4.4 已更改表面上色 (226)4.5 设置细节设计选项 (226)5. 显示设计 (229)5.1 概述 (229)5.2 设置对象可见性 (230)5.3 将设计定向 (231)5.3.1 概述 (231)5.3.2 旋转设计 (232)5.3.3 平移设计 (233)5.3.4 放大和缩小 (234)5.3.5 旋转设计 (235)5.3.6 原始视角 (235)5.3.7 显示正面视图 (236)5.3.8 选择视图 (237)5.3.9 对齐视图 (238)5.4 图形样式 (238)5.4.1 应用图形样式 (238)5.4.2 显示边 (239)5.4.3 应用颜色 (240)5.4.4 线型 (241)5.5 图层 (241)5.6 工作区窗口 (243)5.6.1 在多个窗口中显示设计 (243)5.6.2 分割工作区窗口 (244)5.6.3 在工作区窗口之间切换 (244)5.7 显示工作区工具 (245)5.8 草图栅格样式 (245)5.9 显示轻量化部件 (247)6. 使用SpaceClaim 文档 (248)6.1 创建、打开和保存文档 (248)6.2 导入和导出 (249)6.3 打印图纸和设计 (252)6.4 日志和记录 (253)6.5 设计结构 (254)6.6 SpaceClaim 文件格式 (256)7. 自定义SpaceClaim (258)7.1 概述 (258)7.2 常用选项 (259)7.3 文件导入和导出选项 (261)7.4 细节设计选项 (263)7.5 颜色选项 (266)7.6 对齐选项 (266)7.7 单位选项 (267)7.8 支持文件选项 (268)7.9 钣金选项 (269)7.10 高级选项 (270)7.11 快速访问工具栏选项 (272)7.12 插件选项 (273)7.13 显示工作区工具 (273)7.14 配置窗口 (274)8. 钣金 (275)8.1 概述 (275)8.2 修正钣金零件 (282)9. SpaceClaim 插件 (283)9.1 概述 (283)9.2 开发SpaceClaim 插件 (283)10. 获得帮助 (284)11. SpaceClaim 版权信息 (285)1. 简介1草绘(See 2.5)并拉动(See 2.7)以创建零件,或打开(See 6.2)任何建模软件创建的现有模型。
SPM-PPI中文说明

SPM-PPI中文说明版权声明本文的的英文原版说明文件版权归SPM全球社区所拥有,翻译后的本中文版版权都归翻译作者蜡笔赵欣所有,同时也感谢其学姐李方方帮忙把最后两页纸质版文档整理成电子版文档,本翻译仅做交流学习之用,如果要将其用于其它商业用途,须发邮件给作者来征得其的同意。
如果SPM全球社区发现本人在翻译的内容中有侵犯SPM全球社区的方面,可以发邮件给作者要求删除相关部分,同时文中有翻译的不恰当的地方,也希望你发邮件给我指出其中的错误。
作者蜡笔赵欣电子邮箱zhaoxin11232@PPIy=V1β1+(B2-B1)β2+(V1(B2-B1) )β3+Gβ4+ε (33.2)类似的,对于心理生理交互作用激活来说,来自大脑里面的两个区域(V1区和后顶骨区(PP 区))是被用来作主要影响区域,如下等式所示:y=V1β1+PPβ2+(V1*PP)β3+Gβ4+ε (33.3)我找到的相关资料再次注意一下以上三个等式。
33.1,33.2和33.3都有三个代数项(不要搞混咯)——两个主要影响和一个交互作用影响,因此,设计矩阵必须至少有3列。
一个最基本地PPI设计矩阵如图33.1所示图33.1 这是一个PPI(或是φPI)的示例设计矩阵,主要影响是来自V1区域的BOLD激活,该数据在第2列中,并且一个心理上的向量,注意与不注意在第三列,推论将特别地关注交互作用的代数项,在第1列中,设计矩阵用了[1 0 0 0]这样一个向量,在φPI中第三列将作为来自于源头区域的BOLD激活,而不是心理因子。
PPI与φPIs都能被想象为一个分配模型,PPIs占据着了功能连接与有效连接模型之间的中间地带,功能连接(FC)一直都是被定义为处于空间上被分割的神经生理事件之间的在时间上的一种相关,FC分析方法是最典型的无模型分析方法,同时它也不用指定一个作用的大致方向等等。
其中,A对B的作用不能通过B 对A的作用区分出来,与此相反。
PPIs是基于回归模型具有很强的紧密联系,但是因为PPIs 通常是非常简单(1个源区域和1个实验因子,如果是φPIs的话,则是两个源区域),他们都是有限的EC模型。
SPM5数据分析简明教程

SPM5数据分析简明教程SPM5(Statistical Parametric Mapping)是一种用于脑功能研究的数据分析软件包。
它被广泛应用于神经影像学领域,尤其是功能磁共振成像(fMRI)和脑电图(EEG)数据的分析。
SPM5提供了一套完整的工具,用于数据预处理、统计分析和结果展示。
本文将为读者提供一个简明的SPM5数据分析教程,帮助他们入门并开始进行自己的数据分析。
首先,我们需要准备数据。
在SPM5中,数据的格式通常是NIfTI (Neuroimaging Informatics Technology Initiative)格式。
如果您的数据不在这种格式中,可以使用转换工具将其转换为NIfTI格式。
准备好数据后,我们可以开始进行数据预处理。
数据预处理是SPM5分析流程的第一步。
它包括将数据进行切片时间校正、运动校正和空间归一化等操作,以消除数据中的伪迹和偏差。
可以使用SPM5自带的工具箱来完成这些操作。
在进行切片时间校正时,将数据按照时间顺序排列,以修正不同时间点的数据获取延迟。
运动校正将数据对齐到一个参考时间点,以纠正研究对象在扫描期间的运动。
空间归一化是将数据的空间分辨率转换为标准形态,以便进行统计分析。
完成数据预处理后,我们可以进行统计分析。
在SPM5中,统计分析通常使用广义线性模型(GLM)来建模和推断。
GLM允许我们将神经影像数据与实验设计和研究假设相结合,以估计不同神经活动与不同条件之间的关系。
要进行统计分析,我们需要创建一个设计矩阵,其中包含任务设计和卷积函数。
任务设计是实验条件的时间表,它描述了每个条件在实验中发生的时间和持续时间。
卷积函数是血氧水平依赖(BOLD)信号响应的数学模型,它描述了神经活动和BOLD信号之间的时间延迟和持续时间的关系。
设计矩阵创建完成后,我们可以使用SPM5进行模型估计和推断。
SPM5将根据设计矩阵中的信息对每个脑体素(voxel)进行建模,估计神经活动与条件之间的关系,并计算统计显著性。
SPM中文(IPM中文)

6 FSBB15CH60 Rev. D
FSBB15CH60 智能功率模块
电气特性 (TJ = 25°C,除非另有说明)
控制部分
符号
参数
工作条件
最小值 典型值 最大值
IQCCL IQCCH
VCC 静态 馈电流
IQBS
VBS 静态 馈电流
VFOH VFOL VSC(ref) UVCCD UVCCR UVBSD UVBSR tFOD VIN(ON) VIN(OFF)
集成的驱动、保护和系统控制功能
z 对于逆变器的高端 IGBT:门极驱动电路,高压隔离的高速电平转换控制电路的欠压 (UV) 保护 说明:自举电源电路示例见图 10 和图 11。
z 对于逆变器的低端 IGBT:门极驱动电路,短路保护 (SC) 控制电路电源的欠压 (UV) 保护
z 故障信号传送:对应于欠压 (UV) 故障 (由低端提供) z 输入接口兼容 3.3/5V CMOS/LSTTL,施密特触发器输入
FSBB15CH60 智能功率模块
FSBB15CH60
智能功率模块
7 14, 2006
SPM TM
产品特性
z 通过美国 UL 认证,编号为 E209204 (SPM27 - CA 封装) z 采用 DBC 技术,热阻极低 z 600V-15A 三相 IGBT 逆变器,内置门极驱动和功率器件保护用
控制 IC (集成电路) z 分立的三相直流负端,用于逆变器的电流检测 z 内置高压集成电路 (HVIC),可采用单驱动电源 z 绝缘等级为 2500Vrms/min。
(11) VB(U) (10) VCC(UH)
(9) IN(UH) (12) VS(U)
VB VCC COM IN
SPM程序(CCS)

SPM程序(CCS)硬件层程序/******************************************************************************\ * Copyright (C) 2007 Zhongshan University.* All Rights Reserved*------------------------------------------------------------------------------* FILENAME...... CSPM_DSP_Driver.c* DATE CREATED.. 013/4/2007* LAST MODIFIED. 025/4/2007*\******************************************************************************/ /******************************************************************************\ * CSPM_DSP_Driver Module is the hardware function layer of CSPM. It contains* five module.* AD..................5 Functions* DA..................3 Functions* DIO.................5 Funcitons* Comunicaiton........5 Functions* LED.................8 Functions\******************************************************************************/ #include "dsk6416cfg.h"#include <stdio.h>#include <CSL_gpio.h>#include <math.h>#include <CSL_IRQ.h>#include <CSL_hpi.h>/*-----------------------------Definition-------------------------------------*/#define DIO_SUCCEED 1#define DIO_FAILURE 0#define DA_SUCCEED 1#define DA_FAILURE 0#define AD_SUCCEED 1#define AD_FAILURE 0#define COMM_INIT_SUCCEED 1#define COMM_INIT_FAILURE 0#define DATA_READ_SUCCEED 1#define DATA_READ_FAILURE 0#define DATA_WRITE_SUCCEED 1#define DATA_WRITE_FAILURE 0GPIO_Handle hGpio0;GPIO_Config gpioCfg0 = {0x00001E00, /* GPIO Global Control Register (GPGC) */0x0000FFFF, /* GPIO Enable Register (GPEN) */0x0000FFFF, /* GPIO Direction Register (GPDIR)*/0x00000000, /* GPIO High Mask Register (GPHM)*/0x00000000, /* GPIO Low Mask Register (GPLM)*/0x00000000 /* GPIO Interrupt Polarity Register (GPPOL)*/};void InitGPIO(void);/*AD Module*/#define MAX_AD_BUFFER_SIZE 10240;#define AD_INPUT_RANGE_PN_5 0 // -5v to +5v#define AD_INPUT_RANGE_P_5 1 // 0v to +5v#define AD_INPUT_RANGE_PN_10 2 // -10v to +10v#define AD_INPUT_RANGE_P_10 3 // 0v to 10vUint16 AD_Config = 0x0300;//Uint16 AD_Config = 0x8000;/* Bit 15 : SGL or DIFFBit 13-12: select channelBit 11-10: input rangeBit 9-8: power down select*/int GlobalEnableChannelNo[16];int GlobalEnableChannelCount = 0;int GlobalTotalSampleCount = 0; /* Record the total numbers ofAD convertion */int GlobalChip1ChannelEnableCount = 0;int GlobalChip2ChannelEnableCount = 0;int AD_Count = 0;static int ScanMode = 0;// Current AD convertion countint InitAD(void);int AD_ReadChannels(int InputRange,int ChannelEnable, //bit 0 to 7 enable channelint * SampleCountPerChannel,Uint16 * AD_Buffer); /* Read multiple AD datas formchannels. */Uint16 AD_ReadChannel(int InputRange, int ChannelNo); /* Read sigle data from AD ch-annel. */int AD_SetInputRange(int InputRange);int AD_SelChannel(int ChannelNo);int GetAD_Status(void);/*DA Module*/int InitDA(void);int DA_WriteChannel(int ChannelNo, Uint16 Value);int GetDA_Status(void);/*DIO Module*/Uint32 DO_Data[2];Uint16 DI_Data;int InitDIO(void);int DO_WriteChannel(int ChannelNo, int Data);int DO_WriteChannels(Uint32 * Data);int DI_ReadChannel(int ChannelNo);int DI_ReadChannels(Uint16 * Data);/*Communication Module*/#define MAX_BUFFER_RECEIVE_SIZE 10240#define MAX_BUFFER_SEND_SIZE 514#define BLOCK_SIZE 256Uint16 far BufferReceive[MAX_BUFFER_RECEIVE_SIZE];Uint16 far BufferSend[MAX_BUFFER_SEND_SIZE];Uint16 HasCommand = 0;interrupt void OnCommand();IRQ_Config HostIrqConfig = {OnCommand,0x00000000,IRQ_CCMASK_PCC_ENABLE | IRQ_CCMASK_DCC_MAPPED,IRQ_IEMASK_ALL};int InitHostCommPort(void);interrupt void OnCommand(void);int ReadCommand(void);int ReadHostData(int WordNos ,Uint16 Comm_Buffer[]); /* Read a number of datas fr-om Mail-Box. Max numbersof datas read fromMail-Box is 256. */int WriteHostData(int WordNos, Uint16 Comm_Buffer[]); /* Write a number of datasto Mail-Box and sent themto the host. Max numbersof datas can mord than 256. The Function can autodeal with the sendings po-rssese. *//*-----------------------------Declearation-----------------------------------*/void InitGPIO(void){hGpio0 = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);GPIO_config(hGpio0, &gpioCfg0);}/*AD Module*/int InitAD(void){PRD_stop(&PRD_AD);MCBSP_start(hMcbsp0,MCBSP_RCV_START | MCBSP_XMIT_START | MCBSP_SRGR_START| MCBSP_SRGR_FRAMESYNC, 0);return AD_SUCCEED;}Uint16 * Buffer;int AD_ReadChannels(int InputRange, int ChannelEnable, int * SampleCountperChannel, Uint16AD_Buffer[]){int i = 0,j = 0,k = 0,l = 0,Data,num = 0,tmp=0;AD_SetInputRange(InputRange);for(i=0;i<16;i++)GlobalEnableChannelNo[i]=i;Buffer = AD_Buffer;k=400;while(k!=0) k--;for(j=0;j<=16;j+=2){l=j;if(j==16) l=0;num=GlobalEnableChannelNo[l];AD_SelChannel(num);for(i=0;i<4;i++){k=400;while(k!=0) k--;while (!MCBSP_xrdy(hMcbsp0));MCBSP_write(hMcbsp0,AD_Config);while (!MCBSP_rrdy(hMcbsp0));Data= MCBSP_read(hMcbsp0);}tmp=l;if(l==8)tmp=5;if(l==10)tmp=7;if(l==12)tmp=1;if(l==14)tmp=3; //tip_amp save in buffer[5] pha in buffer[7]GlobalChip1ChannelEnableCount=tmp;Buffer[GlobalChip1ChannelEnableCount]=Data;}// PRD_start(&PRD_AD);return AD_SUCCEED;}void PRD_AD_Convert(void){int j,tmp,Data;tmp=GlobalEnableChannelNo[AD_Count];AD_Count++;AD_SelChannel(tmp);while (!MCBSP_xrdy(hMcbsp0));MCBSP_write(hMcbsp0,AD_Config);while (!MCBSP_rrdy(hMcbsp0));Data= MCBSP_read(hMcbsp0);Buffer[GlobalChip1ChannelEnableCount]=Data;GlobalChip1ChannelEnableCount=tmp;/* while (!MCBSP_xrdy(hMcbsp0));MCBSP_write(hMcbsp0,AD_Config);if((AD_Count>0) && ((AD_Count!=GlobalChip1ChannelEnableCount) || (GlobalEnableChannelCount==GlobalChip1ChannelEnableCount))){if((AD_Count%GlobalEnableChannelCount == 0) || ((AD_Count%GlobalEnableChannelCount == GlobalChip1ChannelEnableCount) && (GlobalEnableChannelCount != GlobalChip1ChannelEnableCount))) {while (!MCBSP_rrdy(hMcbsp0));Buffer[AD_Count-GlobalEnableChannelCount] = MCBSP_read(hMcbsp0);}else{if(AD_Count<GlobalTotalSampleCount){while (!MCBSP_rrdy(hMcbsp0));Buffer[AD_Count] = MCBSP_read(hMcbsp0);}else{while (!MCBSP_rrdy(hMcbsp0));MCBSP_read(hMcbsp0);}}}else{while (!MCBSP_rrdy(hMcbsp0));MCBSP_read(hMcbsp0);}*/j=400;while(j!=0) j--; //xiaoxin add hereif(AD_Count>8){AD_Count = 0;PRD_stop(&PRD_AD);}}/*******************************AD_CONFIG***************************Config word length:16 bitsD15:SGL/DIFF (D15=1:Single-Ended;D15=0:Differential-Ended);D14/13/12:Select channel0-7000:channel 0001:channel 2010:channel 4011:channel 6100:channel 1101:channel 3110:channel 5111:channel 7D11/10:Input Range00: -5V TO +5V10: 0V TO +5V01: -10V TO +10V11: 0V TO +10VD9/D8:Power Down Selection00: power on10: Napx1: SleepD7/6/5/4/3/2/1/0: Reserved(Not Used)NOTE:Config Word need to invert because of the 74HC14***************************************AD_CONFIG********************************/ Uint16 AD_ReadChannel(int InputRange, int ChannelNo){Uint16 Data;AD_SetInputRange(InputRange);AD_SelChannel(ChannelNo);/* while (!MCBSP_xrdy(hMcbsp0));MCBSP_write(hMcbsp0,AD_Config);Data = MCBSP_read(hMcbsp0);*/while (!MCBSP_xrdy(hMcbsp0));MCBSP_write(hMcbsp0,AD_Config);Data = MCBSP_read(hMcbsp0);return Data;}int AD_SetInputRange(int InputRange){if(InputRange == AD_INPUT_RANGE_PN_5){AD_Config &= 0xF300;AD_Config |= 0x0C00; //xiaoxin add here,in order to invert;}else if(InputRange == AD_INPUT_RANGE_P_5){AD_Config &= 0xF300;AD_Config |= 0x0400;}else if(InputRange == AD_INPUT_RANGE_PN_10){AD_Config &= 0xF300;AD_Config |= 0x0800;}else if(InputRange == AD_INPUT_RANGE_P_10){AD_Config &= 0xF300;//AD_Config |= 0x0C00;}return AD_SUCCEED;}int AD_SelChannel(int ChannelNo){Uint8 * RegHcntl = (Uint8 *)0x60000001;int TempChannelNo = 0;if(ChannelNo < 8){//*RegHcntl &= 0xFFFC; //set CS bit = 0 (xiaoxin Cancel here)*RegHcntl |= 0x0002; //set CS bit = 1;(xiaoxin add here in order to invert;)//GPIO_pinWrite(hGpio0,GPIO_PIN9,1);//AD_CS0 change to AD_CS2(by zwen 2010-5-22) }else{ChannelNo -= 8;//*RegHcntl |= 0x0003; //set CS bit = 1;(xiaoxin Cancel here)*RegHcntl &= 0xFFFD; //set CS bit = 0 (xiaoxin add here in order to invert;)//GPIO_pinWrite(hGpio0,GPIO_PIN9,0);//AD_CS0 change to AD_CS2(by zwen 2010-5-22) }TempChannelNo = ChannelNo&0x0001;TempChannelNo = TempChannelNo<<2;ChannelNo = ChannelNo>>1;ChannelNo |= TempChannelNo;ChannelNo =7-ChannelNo; //xiaoxin add here,in order to invert;AD_Config &= 0x8FFF;AD_Config |= ChannelNo<<12;return AD_SUCCEED;}int GetAD_Status(void){return AD_Count;}/*DA Module*/int InitDA(void){MCBSP_start(hMcbsp2,MCBSP_RCV_START | MCBSP_XMIT_START | MCBSP_SRGR_START| MCBSP_SRGR_FRAMESYNC, 0);return DA_SUCCEED;}int DA_WriteChannel(int ChannelNo, Uint16 Value){int Delay = 400;unsigned int x = 0;Uint16 DA_CS;if(ChannelNo < 4){DA_CS = 0x0000;}else if(ChannelNo < 8){DA_CS = 0x0400;ChannelNo -= 4;}else if(ChannelNo < 12){DA_CS = 0x1000;ChannelNo -= 8;}else{DA_CS = 0x1400;ChannelNo -= 12;}// ChannelNo =3-ChannelNo; //invertedx = 65535-Value; //inverted// Value |= ChannelNo<<22;ChannelNo = 3-ChannelNo;x |= ChannelNo<<22;x |= 0x200000;// Value |= 0x900000;GPIO_write(hGpio0, GPIO_PIN12|GPIO_PIN10, DA_CS);MCBSP_FSET(PCR2, FSRP, 0);MCBSP_FSET(PCR2, CLKRP, 1);while (!MCBSP_xrdy(hMcbsp2));MCBSP_write(hMcbsp2, x);while(Delay!=0)Delay--;MCBSP_FSET(PCR2, FSRP, 1);MCBSP_FSET(PCR2, CLKRP, 0);MCBSP_setPins(hMcbsp2,MCBSP_PIN_FSR);MCBSP_setPins(hMcbsp2,MCBSP_PIN_CLKR);return DA_SUCCEED;}/*DIO Module*/int GetDIO_Status(void){return DIO_SUCCEED;}int InitDIO(void){MCBSP_start(hMcbsp1,MCBSP_RCV_START | MCBSP_XMIT_START | MCBSP_SRGR_START| MCBSP_SRGR_FRAMESYNC, 0);return DIO_SUCCEED;}int DO_WriteChannel(int ChannelNo, int Data){int Delay = 100;Uint32 Temp_DO_Data;//Uint32 Temp_DI_Data;int address;int DO_Data_OUT;address=ChannelNo/8;address=7-address; //invertedaddress=address<<8;if(ChannelNo < 32){if(!Data){Temp_DO_Data = 0x00000001;DO_Data[0] |= Temp_DO_Data<<ChannelNo;}else{Temp_DO_Data = 0xFFFFFFFE;Temp_DO_Data=Temp_DO_Data<<ChannelNo;Temp_DO_Data=Temp_DO_Data+pow(2,ChannelNo);Temp_DO_Data=Temp_DO_Data-1;DO_Data[0] &= Temp_DO_Data;}DO_Data_OUT=0x000000FF&(DO_Data[0]>>(ChannelNo/8*8)); /*ChannelNo 7-0 NO need to right shift;ChannelNo 15-8 need to right shift 8 bits;ChannelNo 23-16 need to right shift 16 bits;ChannelNo 31-24 need to right shift 24 bits;*///DO_Data_OUT=255-DO_Data_OUT; //invertedDO_Data_OUT=DO_Data_OUT+address;}else{if(!Data){Temp_DO_Data = 0x00000001;DO_Data[1] |= Temp_DO_Data<<(ChannelNo-32);}else{Temp_DO_Data = 0xFFFFFFFE;Temp_DO_Data=Temp_DO_Data<<(ChannelNo-32);Temp_DO_Data=Temp_DO_Data+pow(2,(ChannelNo-32));Temp_DO_Data=Temp_DO_Data-1;DO_Data[1] &= Temp_DO_Data;}DO_Data_OUT=0x000000FF&(DO_Data[1]>>((ChannelNo-32)/8*8));/*ChannelNo 39-32 NO need to right shift;ChannelNo 47-40 need to right shift 8 bits;ChannelNo 55-48 need to right shift 16 bits;ChannelNo 63-40 need to right shift 24 bits;*///DO_Data_OUT=255-DO_Data_OUT; //invertedDO_Data_OUT=DO_Data_OUT+address;}while(!MCBSP_xrdy(hMcbsp1));MCBSP_write(hMcbsp1, DO_Data_OUT); /*DO_Data_OUT:12 bits;DO_Data_OUT11] :reserve;DO_Data_OUT10-8: address 2-0;DO_Data_OUT7-0: 8 bits send data;*//*CASE (address 2-0)000:DO 7-0;001:DO 15-8;010:DO 23-16;011:DO 31-24;100:DO 39-32;101:DO 47-40;110:DO 55-48;111:DO 63-56;*/while(Delay!=0)Delay--;while(!MCBSP_rrdy(hMcbsp1));DI_Data= MCBSP_read(hMcbsp1);/*12 bits DI DATA:DI 16-8 AND DI 3-0*///DI_Data =Temp_DI_Data<<4;//Temp_DI_Data&=0x000F;//DI_Data=0xFFFF-DI_Data;//DI_Data&=0xFF00;//DI_Data+=Temp_DI_Data+0x00F0;/*ADD DI 7-4 TO READ DATA BY V ALUE ALL 1*/ while(Delay!=0)Delay--;return DIO_SUCCEED;}int DO_WriteChannels(Uint32 * Data){int Delay = 400;int Index;int address;int DO_Data_out;//Uint16 Temp_DI_Data;DI_Data = 0;DO_Data[0]=4294967295-Data[0];DO_Data[1]=4294967295-Data[1];for(Index = 0; Index<8; Index++){address=7-Index; //invertedaddress=address<<8;if(Index<4){DO_Data_out=0x000000FF&(DO_Data[0]>>(Index*8));DO_Data_out=DO_Data_out+address;}else{DO_Data_out=0x000000FF&(DO_Data[1]>>((Index-4)*8));DO_Data_out=DO_Data_out+address;}while(!MCBSP_xrdy(hMcbsp1));MCBSP_write(hMcbsp1, DO_Data_out);while(Delay!=0)Delay--;while(!MCBSP_rrdy(hMcbsp1));DI_Data= MCBSP_read(hMcbsp1);/*Temp_DI_Data= MCBSP_read(hMcbsp1);DI_Data =Temp_DI_Data<<4;Temp_DI_Data&=0x000F;DI_Data=0xFFFF-DI_Data;DI_Data&=0xFF00;DI_Data+=Temp_DI_Data+0x00F0;*/while(Delay!=0)Delay--;}return DIO_SUCCEED;}int DI_ReadChannel(int ChannelNo){int Delay = 400;int DO_Data_OUT;//Uint16 Temp_DI_Data;DI_Data = 0;DO_Data_OUT=0x000000FF&DO_Data[0];DO_Data_OUT |=0x00000700; //invertedwhile(!MCBSP_xrdy(hMcbsp1));MCBSP_write(hMcbsp1, DO_Data_OUT);while(Delay!=0)Delay--;while(!MCBSP_rrdy(hMcbsp1));DI_Data= MCBSP_read(hMcbsp1);/*Temp_DI_Data= MCBSP_read(hMcbsp1);DI_Data =Temp_DI_Data<<4;Temp_DI_Data&=0x000F;DI_Data=0xFFFF-DI_Data;DI_Data&=0xFF00;DI_Data+=Temp_DI_Data+0x00F0;*/while(Delay!=0)Delay--;return (DI_Data>>ChannelNo)&0x0001;}int DI_ReadChannels(Uint16 * Data){int Delay = 400;int DO_Data_OUT;//Uint32 Temp_DI_Data;DI_Data = 0;DO_Data_OUT=0x000000FF&DO_Data[0];DO_Data_OUT |=0x00000700; //invertedwhile(!MCBSP_xrdy(hMcbsp1));MCBSP_write(hMcbsp1, DO_Data_OUT);while(Delay!=0)Delay--;while(!MCBSP_rrdy(hMcbsp1));DI_Data= MCBSP_read(hMcbsp1);/*Temp_DI_Data= MCBSP_read(hMcbsp1);DI_Data =Temp_DI_Data<<4;Temp_DI_Data&=0x000F;DI_Data= 0xFFFF-DI_Data;DI_Data&=0xFF00;DI_Data+=Temp_DI_Data+0x00F0; */while(Delay!=0)Delay--;*Data = DI_Data;return DIO_SUCCEED;}/*Communication Module*/int InitHostCommPort(void){int old_intm;HPI_FSET(HPIC,HWOB,1);HPI_setWriteAddr((Uint32)BufferReceive/4);HPI_setReadAddr((Uint32)BufferSend/4);old_intm = IRQ_globalDisable();//IRQ_map(IRQ_EVT_DSPINT,15);IRQ_map(IRQ_EVT_DSPINT,13);IRQ_config(IRQ_EVT_DSPINT,&HostIrqConfig);IRQ_clear(IRQ_EVT_DSPINT);IRQ_enable(IRQ_EVT_DSPINT);IRQ_globalRestore(old_intm);IRQ_globalEnable();return COMM_INIT_SUCCEED;}int ReadCommand(void){return (int)BufferReceive[0];}int ReadHostData(int WordNos ,Uint16 * Comm_Buffer) {int Index;for(Index = 0; Index < WordNos; Index++){Comm_Buffer[Index] = BufferReceive[Index+2];}return DATA_READ_SUCCEED;}int WriteHostData(int WordNos, Uint16 Comm_Buffer[]) {int Blocks,LeftOver;int i,j;SWI_disable();Blocks = WordNos/BLOCK_SIZE;LeftOver = WordNos%BLOCK_SIZE;if(LeftOver%2 != 0)LeftOver += 1;for(i = 0; i < Blocks; i++){BufferSend[0] = BLOCK_SIZE;BufferSend[1] = BLOCK_SIZE;for(j = 0; j < BLOCK_SIZE; j++)BufferSend[j+2] = Comm_Buffer[i*256+j];//while(HPI_getHrdy());HPI_setHint(1);while(HPI_getHint());HPI_setReadAddr((Uint32)BufferSend/4);}if(LeftOver){BufferSend[0] = LeftOver;BufferSend[1] = LeftOver;for(j = 0; j < LeftOver; j++)BufferSend[j+2] = Comm_Buffer[j];// while(HPI_getHrdy());HPI_setHint(1);while(HPI_getHint());HPI_setReadAddr((Uint32)BufferSend/4);}SWI_enable();return DATA_WRITE_SUCCEED;}//-----------------------------------------------------------//functions about control 3 LEDs on the board;//led 1 about feedback status;//led 2 about scan status;//led 3 about approach status;//-----------------------------------------------------------void FeedBackLED_ON(){GPIO_write(hGpio0, GPIO_PIN11, 0x0800);}void FeedBackLED_OFF(){GPIO_write(hGpio0, GPIO_PIN11, 0x0000);}void ScanLED_ON(){GPIO_write(hGpio0, GPIO_PIN9, 0x0200);}void ScanLED_OFF(){GPIO_write(hGpio0, GPIO_PIN9, 0x0000);}void ApproachLED_ON(){Uint8 * RegHcntl = (Uint8 *)0x60000001;*RegHcntl |= 0x0001;}void ApproachLED_OFF(){Uint8 * RegHcntl = (Uint8 *)0x60000001;*RegHcntl &= 0xfffe;}功能层功能层程序/******************************************************************************\ * Copyright (C) 2007 Zhongshan University.* All Rights Reserved*------------------------------------------------------------------------------* FILENAME...... CSPM_DSP_Function.h* DATE CREATED.. 013/4/2007* LAST MODIFIED. 013/4/2007*\******************************************************************************/ /******************************************************************************\ * CSPM_DSP_Function Module is the micro manupulate funtions of CSPM.* It contains 96 functions.** function concerning initiate................2 functions* function concerning DI......................4 functions* function concerning DO.....................26 functions* function concerning DA.....................12 functions* function concerning approach................2 functions* function concerning reflesh................13 functions* function concerning AD image................5 functions* function concerning Data acquire............3 functions** function concerning stepper (Benyuan).......3 functions* function concerning stepper (Seiko).........3 functions* function concerning stepper (RHK)...........4 functions* function concerning Feedback (Analog).......7 functions* function concerning Feedback (Digital).....12 functions* function concerning NSPM Status refresh.....4 functions\******************************************************************************/ #include "CSPM_DSP_Driver.h"#include <csl_timer.h>#define FAILURE 0#define SUCCESS 1//*********************************************************//// function concerning initial ////*********************************************************////------------Function 101---------//#define DSP_HARDWRE_OK 3#define DSP_DIO_FAILURE 2#define DSP_DA_FAILURE 1#define DSP_AD_FAILURE 0int SpmType; //SpmType=0:STM;SpmType=1:AFM//xiaoxin add hereextern int GlobalFeebackType;void Delay(long tenmicrosecond);int CheckDspHardware(void){int i;int DSP_Status = 0;// Uint32 DO_Data[2]={0xFFFFFFFF,0xFFFFFFFF};Uint32 DO_Data[2]={0x00000000,0x38000008};// InitGPIO();if(InitDIO()){DO_WriteChannels(DO_Data);DO_WriteChannel(3,1);DO_WriteChannel(27,1);DO_WriteChannel(28,1);DO_WriteChannel(29,1);SpmType=DI_ReadChannel(3);if(!SpmType){DO_WriteChannel(13,1);DO_WriteChannel(14,1);DO_WriteChannel(15,0);}else{DO_WriteChannel(13,1);DO_WriteChannel(14,1);DO_WriteChannel(15,1);}DSP_Status++;}if(InitAD())DSP_Status++;if(InitDA()){for(i=0; i<16; i++)DA_WriteChannel(i,32767); // set all DA channel to 0mV DSP_Status++;}return DSP_Status;}void TappingType(void){DO_WriteChannel(13,0);DO_WriteChannel(14,1);DO_WriteChannel(15,1);}void ContactType(void){DO_WriteChannel(13,1);DO_WriteChannel(14,1);DO_WriteChannel(15,1);}//------------Function 102---------//#define FREE_SUCCESS 1#define FREE_FAILURE 0int FreeDspHardware(void){Uint16 DSP_Status = FREE_SUCCESS;if(WriteHostData(1,&DSP_Status))return SUCCESS;elsereturn FAILURE;}//*********************************************************//// function concerning DI ////*********************************************************////------------Function 103-----------//#define C_PowerOff 0#define C_PowerOn 1int IsPowerOn(void){if(DI_ReadChannel(7))return C_PowerOn;elsereturn C_PowerOff;}//------------Function 104-----------//#define C_HeadNotReady 0#define C_HeadReady 1int IsHeadReady(void){if(DI_ReadChannel(8))return C_HeadReady;elsereturn C_HeadNotReady;}//------------Function 105-----------//#define C_InputLevel_Low 0#define C_InuptLevel_High 1Uint16 ReadSingleDI(Uint16 ChannelNo){return DI_ReadChannel(ChannelNo);}//------------Function 106-----------//Uint16 ReadAllDI(void){Uint16 v=0;DI_ReadChannels(&v);return v;}//*********************************************************// // function concerning DO // //*********************************************************// //----------Function 107---------//#define C_ImgADCInsultOff 0#define C_ImgADCInsultOn 1int SwImgADCInsultlation(int DCInsult){DCInsult=(DCInsult+1)%2;if(DO_WriteChannel(16,DCInsult))return SUCCESS;elsereturn FAILURE;}//----------Function 108---------////---------switch DC insultlation of Image B-------//#define C_ImgBDCInsultOff 0#define C_ImgBDCInsultOn 1int SwImgBDCInsultlation(int DCInsult){DCInsult=(DCInsult+1)%2;if(DO_WriteChannel(17,DCInsult))return SUCCESS;elsereturn FAILURE;}//----------Function 109---------//#define C_ImgCDCInsultOff 0#define C_ImgCDCInsultOn 1int SwImgCDCInsultlation(int DCInsult){DCInsult=(DCInsult+1)%2;if(DO_WriteChannel(19,DCInsult))return SUCCESS;elsereturn FAILURE;}//------------Function 110---------//#define C_HVScanPowerOff 0#define C_HVScanPowerOn 1int SwHVScanPower(int HVScanPower){if(DO_WriteChannel(25,HVScanPower))return SUCCESS;elsereturn FAILURE;}//------------Function 111---------//#define C_LaserPowerOff 0#define C_LaserPowerOn 1int SwLaserPower(int LaserPower){if(DO_WriteChannel(2,LaserPower))//benyuan CSPM4000 //if(DO_WriteChannel(27,LaserPower))return SUCCESS;elsereturn FAILURE;}//------------Function 112---------//#define C_HVPowerOn 1#define C_HVPowerOff 0int SwHVPower(int HVPower){if(DO_WriteChannel(26,HVPower))return SUCCESS;elsereturn FAILURE;}//------------Function 113---------//#define C_TestImgA 0#define C_TestImgB 1#define C_TestImgC 2#define C_TestZControl 3#define C_TestAFMSum 4#define C_TestAFML 5#define C_TestAFMY 6#define C_TestSTMI 7int SelTest(int Test){int Ch32Value,Ch33Value,Ch34Value;Ch32Value=Test%2;Ch33Value=(Test/2)%2;Ch34Value=(Test/4)%2;if( DO_WriteChannel(34,Ch34Value)&&DO_WriteChannel(33,Ch33Value)&&DO_WriteChannel(32,Ch32Value) )return SUCCESS;elsereturn FAILURE;}//------------Function 114---------//#define C_OutputFilterCap103p 0#define C_OutputFilterCap473p 1#define C_OutputFilterCap104p 2#define C_OutputFilterCap105p 3int SelTestFilterCap(int TestFilterCap){int Ch44Value,Ch45Value;Ch44Value=TestFilterCap%2;Ch45Value=TestFilterCap/2;if(DO_WriteChannel(44,Ch44Value)&&DO_WriteChannel(45,Ch45Value)) return SUCCESS;elsereturn FAILURE;}//------------Function 115---------//#define C_NoSelSTS 0#define C_SelNormalRangeSTS 2#define C_SelSmallRagneSTS 3int SelSTS(int STS){int Ch23Value,Ch22Value;Ch23Value=STS%2;Ch22Value=STS/2;if(DO_WriteChannel(22,Ch22Value)&&DO_WriteChannel(23,Ch23Value)) return SUCCESS;elsereturn FAILURE;}//------------Function 116---------//#define C_XScanRangeNormal 0#define C_XScanRangediv2 1#define C_XScanRangediv4 2#define C_XScanRangediv8 3#define C_XScanRangediv16 4#define C_XScanRangediv32 5#define C_XScanRangediv64 6#define C_XScanRangediv128 7/*int SelXScanRange(int ScanRange){int count,Ch3Value,delay;ScanRange=4095-ScanRange;DO_WriteChannel(24,0);for(delay=0;delay<10;delay++);DO_WriteChannel(23,1);for(delay=0;delay<5;delay++);for(count=0;count<12;count++){Ch3Value=ScanRange>>(11-count);Ch3Value=0x0001&Ch3Value;DO_WriteChannel(22,Ch3Value); //DO22: 12 bit Serial data,high bit firstfor(delay=0;delay<6;delay++);DO_WriteChannel(23,0); //DO23: Serial clock// for(delay=0;delay<50;delay++);for(delay=0;delay<1100;delay++);DO_WriteChannel(23,1);for(delay=0;delay<1;delay++);}for(delay=0;delay<15;delay++);DO_WriteChannel(24,1); //DO24: X scan range CSfor(delay=0;delay<5;delay++);DO_WriteChannel(24,0);for(delay=0;delay<50;delay++);return SUCCESS;int aScanRange;int Ch3Value,Ch4Value,Ch5Value;aScanRange=7-ScanRange;Ch5Value=aScanRange/4;Ch4Value=(aScanRange%4)/2;Ch3Value=aScanRange%2;if( DO_WriteChannel(3,Ch3Value) &&DO_WriteChannel(4,Ch4Value) &&DO_WriteChannel(5,Ch5Value) )return SUCCESS;elsereturn FAILURE;}*/void Delay(long tenmicrosecond);/*----------------------------------------------------------------------------*///可编程放大器控制//Short Value:[1,4095]int portSRI;// SRI of DAC#define DO_SRI 22int portCLK;// CLK of DAC#define DO_CLK 23int portLD;// Signal L Gain Selection of DAC#define DO_LD_SIGNAL_L 18// Signal O Gain Selection of DAC#define DO_LD_SIGNAL_O 20// Signal I Gain Selection of DAC#define DO_LD_SIGNAL_I 21// Vx Scan Gain Selection of DAC#define DO_LD_X 24// Vy Scan Gain Selection of DAC#define DO_LD_Y 25// Vz Scan Gain Selection of DAC (no usage)#define DO_LD_Z 26void DACOut(short Value, int portSRI, int portCLK, int portLD){short bitOp = 0x0800;int i;static char entered = 0;// 由于4个DAC芯片公用同路数据及时钟线路,因此应防止写入过程重入if (entered!=0)return;entered = 1;// Output to DAC ChipDO_WriteChannel(portSRI, 1);DO_WriteChannel(portCLK, 1);DO_WriteChannel(portLD, 0);// Set 12 bits Register value. Most significant bit first.for (i=0; i<12; i++) {DO_WriteChannel(portSRI, !(bitOp & Value));Delay(10);DO_WriteChannel(portCLK, 0);Delay(20);DO_WriteChannel(portCLK, 1);Delay(10);bitOp >>= 1;}// Load register to ...DO_WriteChannel(portLD, 1);Delay(10);DO_WriteChannel(portLD, 0);entered = 0;}int SelXScanRange(int ScanRange){short Value;Value = (short) ScanRange;if(Value < 1) Value = 1;if(Value > 4095) Value = 4095;DACOut(Value,DO_SRI,DO_CLK,DO_LD_X);return SUCCESS;}//*----------------------------------------------------------------------------*///------------Function 117---------//#define C_YScanRangeNormal 0#define C_YScanRangediv2 1#define C_YScanRangediv4 2#define C_YScanRangediv8 3#define C_YScanRangediv16 4#define C_YScanRangediv32 5#define C_YScanRangediv64 6#define C_YScanRangediv128 7。
spm8详细教程

SPM8数据处理教程Lab 1. 数据的预处理一、概述:数据的预处理(preprocess):(1)Convert dicom files to hdr files and img images;(2)Slice Timing;(3)Realign: Estimate & Reslice;(4)Coreg: Estimate;(5)Segment;(6)两次Normalise: Write;(7)Smooth;(8)Fmri model specification;(8)Model Estimation。
二、DICOM Import:说明:转换完后会在解剖像文件名前加s,在功能像文件名前加f。
可以用“Display”来查看刚转换的图像。
(Display还有一个重要的作用是定义原点——前联合和AC-PC连线,这在做Normalise中很重要。
定义后reorient一下即可写入头信息)。
三、Slice timing1、目的:使用数学的方法使不同时间扫面的层校正为同一时间获得层。
2、过程:Date.session---[选中所有要处理的f*.文件]Number of slices---[扫描层数]TRTA---[可以用公式表示:TR-(TR/nslices)]Slice order---[扫描顺序:例如1:2:31 2:2:32分别表示从1或2开始,每间隔2个数扫描一张,即1、3、5… 2、4、6…]Reference slice---[参考层,一般选择中间的一张,对于各层扫描,一般选择即是时间的中点,又是大脑的中点。
如果是层数为偶,可以选择中点处2层中的任一层]Filename Prefix—a [默认头文件名为a]3、说明:Block Design的实验数据这一步可以跳过;event related design的实验数据必须做这一步。
四、Realign: Estimate & Reslice1、目的:如果在容许的头动范围内,可以使用一定的算法校正信号,使其靠近真实值,如果超过了这个规定的范围,则必须剔除这组数据。
SPM中文教程 汇总(已整理)

一、SPM的安装与启动先安装matlab,然后将SPM复制到matlab下的一个文件夹(SPM2需要matlab6.0或以上版本)。
启动matlab,首先set path,然后在matlab命令窗口中输入SPM即可启动,然后选择fMRI,也可以直接输入SPM fMRI二、SPM数据处理概要先将所得数据进行空间预处理(对齐,平滑,标准化等),然后进行模型估计(将刺激的时间、间隔与血流动力函数进行卷积,所得结果与全脑象素信号进行相关分析),最后察看结果。
三、SPM8数据处理的一般步骤为方便后续的数据处理,如果数据分散处理后整合,建议所有处理数据路径保持一致,要统一路径。
处理前首先要采用数据转换软件将dicom数据转换成SPM解析格式,然后进行数据预处理,预处理结束后到matlab安装目录中备份spm*.ps文件,其中包含了空间校正和标准化的信息,然后进行建模分析。
运行命令:spm fmri,打开spm8的操作界面我们称左上侧的窗口为按钮窗口(button window),左下侧的窗口为输入窗口(input window),右侧大窗口为树形结构窗口或图形窗口(Tree Building Window or the graphics window)。
在spm8和spm5中,每一步处理都采用了直观的“树形结构”的面板,如果一个分支项左面有“+”号,你可以双击显示子分支项,如果一个分支项右面有“<-X”号,你必须为之指定选项(否则不能运行该tree),分支项的选项在其右侧面板指定,而帮助信息则在下面的面板中显示。
如果我们处理数据没有特殊需求,我们只关心带有“<-X”项目并完成输入即可,其余均可采用默认设置。
另外注意在Tree Building Window的顶部菜单,新增了一个菜单项“TASKS”,在使用批处理分析时非常重要。
以下内容,还可以参考E:\《汇总》中“静息态fMRI的数据预处理流程”这部分的讲述。
SPM12manual,统计部分(8-10)笔记

SPM12manual,统计部分(8-10)笔记fMRI model specifictaionGLM based包括以下步骤:①明确GLM设计矩阵;②⽤经典或贝叶斯⽅法估计GLM参数;③利⽤对⽐向量检查结果,⽣成统计参数图(SPMs)以及后验概率图(PPMs)。
Design matrix:每⾏对应⼀个scan,每列对应⼀个影响变量或解释变量(回归量或解释变量)。
关于GLM(⼀般线性模型)⽹络上有⼤量相关⽂章,对于多被试分析,SPM通常分为两个阶段(level):① 1st-level analysis:个体分析(within-subject)。
通常有多少被试就要进⾏多少1st-level分析。
使⽤ Specify fi rst level 和Estimate 选项。
这些选项的结果可以被⽤于做 case study。
② 2nd-level analysis:RFX analysis(Random effect analysis)。
从被试推断被试所属主体的情况。
1st level analysis:①Conditions:name(1*n cell):condition name;onsets(1*n cell):每个cell中为⼀保存condition开始时间的时间向量,每列对应⼀个condition,每⾏对应其出现时间(补充,⼼⼼⽔滴csddzh:任务刺激启动的扫描数(如1:14:70 ,代表任务从第 1个TR 开始,每14个TR 为⼀个周期,共70个TR));durations:事件时长。
⼀般这些信息都保存在condition.mat⽂件中,使⽤的时候直接load进来,使⽤Multiple Conditions.②Regressors设计矩阵中⽤来和⾎液动⼒响应做卷积的⼀列。
之后的leave-one-out实验要⽤。
暂时还没搞清楚是不是要⽤Multiple Regressors。
③Factorial design设定该选项则SPM 可以直接⽣成主要效应和交互作⽤之间必要的test:F-test(被试个体(1st level)与被试间(2nd level)的contrast image)和T-test。
SPM插件之CAT12中文操作指南

SPM插件之CAT12中文操作指南——牧海的猫 2019.9.24目的:计算VBM(本文不含DBM、SBM等分析)软件:windows-SPM-CAT12(VBM8之类的是前身);Linux-FSL-VBM v.1.1(待后续更新)启动方法(matlab):1. spm fmri-toolbox-cat122. 直接命令行输入cat12基本流程:预处理-建立统计模型-估计预处理:一、图像分割前提:用spm的display功能校准图像位置(和正常spm预处理中校准位置那一步一样);把光标放在前联合,点击设置原点,然后用重新定向按钮把显示在坐标中的校正应用于图像。
用spm-Check Reg功能检查原始图像方向和MNI模板方向一致。
(SPM-templates-T1)1.点击Segment Data,点Volumes选择nii格式的原始T1像2.点Split job into separate processes选择分配给cat12的cpu 核数(单被试数据大概需要2GB内存)3.SPM12仿射注册这块全部默认(这板块可以换组织概率图)4.CAT12预处理扩展选项这块全部默认(这板块可以换DARTEl模板)5.写入选项这一栏在灰质/白质那一部分各有一个Modulated normalized选项,默认是开启的,这一选项开启会对灰质/白质的体积的相对差异进行分析,那么在统计分析的时候必须用颅内总体积文件(TIV.txt)做协变量对单个大脑的体积进行校正。
PS:运行完成后生成三个文件夹,label、mri和report。
mri文件夹里包含脑区各组织的分割文件,mwp1开头的是灰质,mwp2开头的是白质,mw开头的是去颅骨的图像。
在CAT12里,m代表经过较准,w代表经过DARTEL空间配准。
二、颅内体积计算(生成TIV.txt)1.点击CAT12-Statistical Analysis-Estimate TIV,选择report文件夹下的XML文件;2.Save values可选择保存的文件内容,可以只选择TIV也可以同时保存其它组织的全局值,建议只生成TIV即可,如果TIV和感兴趣的其它参数有较强的相关,则建议对TIV进行全局缩放(参见后文)3.选择输出文件的名称,默认即可。
SPM5数据分析简明教程

SPM5数据分析简明教程SPM(Statistical Parametric Mapping)是一种常用的功能磁共振成像(fMRI)数据分析工具,用于研究大脑的活动与功能的关联。
本文将为您介绍SPM5的基本操作和流程,帮助您入门数据分析。
SPM5是SPM软件的一个版本,它提供了一个友好的用户界面,便于用户进行数据处理和结果展示。
在使用SPM5之前,我们需要准备一些基本的数据,包括脑功能成像数据和结构成像数据。
这些数据可以从实验室或大脑成像数据库中获取。
首先,我们需要使用SPM5将原始的fMRI数据进行预处理。
预处理的目的是将原始数据进行校正、对齐和标准化,以便后续的统计分析。
在SPM5中,可以使用"Preprocessing"工具箱来完成这一步骤。
打开工具箱后,我们需要选择需要处理的fMRI数据,然后按照提示进行参数设定,包括对齐和标准化参数。
完成设定后,点击运行按钮即可开始预处理过程。
预处理完成后,会生成一个预处理后的fMRI数据,我们将这个数据用于后续的统计分析。
接下来,我们需要进行统计分析。
在SPM5中,可以使用"General linear model"(GLM)工具箱进行统计分析。
打开工具箱后,需要选择预处理后的fMRI数据、实验设计以及一个用于模型估计的对照矩阵。
然后,设置统计参数,包括显著性阈值、簇大小等。
完成参数设定后,点击运行按钮即可开始统计分析。
分析完成后,SPM5会生成一个统计结果的图像,包括激活区域的位置、大小和程度等信息。
最后,我们可以使用SPM5进行结果展示。
在SPM5中,可以使用"Results"工具箱来查看和展示统计结果。
打开工具箱后,选择统计结果的图像文件,并设置显示参数,如显示阈值和颜色编码等。
然后,点击运行按钮即可展示结果。
结果展示主要包括激活区域的三维和二维可视化,以及区域的统计信息和图表等。
除了以上的基本操作,SPM5还具有一些高级功能,如多个组间比较和多个变量的线性回归分析等。
SPM数据转换教程

SPM中文手把手教程:多种数据转换的方法更有进步和乐趣.写教程是最艰巨的工程,许多错误和遗漏,欢迎大家批评补充.使用SPM进行数据处理前,必须先将其它档案格式转换成spm可以读取的Analyze档案格式,包含.img档和.hdr标头档,相关的转档软件有XMedCon和MRIcro.1.利用AFNI数据转换首先使用afni的三维数据重建: to3d -time:tz 177 20 2s altplus * 生成+orig文件然后: 3dAFNItoAnalyze -4D -orient LPI *epi+orig将生成*.hdr与*.img文件. (*代表你所用的任意文件名)然后打开MRIcro软件:选择要转换的hdr,img文件, processing, ok.选择面板上部 File --Save as 4d to 3d --- Save as intel ---Save (这里有点忘了:))2.直接用MRIcro转换:(此部分转自核医学论坛)1。
点Import/convert foreign to analyze,在出现的对话框中,number of files为你的数据的总文件数,slice increment =1,volume increment=0,volumes为你的实验的volume数。
填好后,先点design,后点select,然后选中你的数据的第一个文件。
然后保存。
2。
点file/open,打开刚才保存的img文件。
3。
点file/save as ...[rotate/clip/format/4D-%26gt;3D],然后点击“save intel”。
即可这样保存后的文件就可以被SPM处理了MRIcro的Import-%26gt;Convert中的volume可以理解为完整头部像数目。
在从GE Signa 1.5T 中获得的fMRI Dicom数据中,是1个slice存成一个dicom image文件,因此,volume数,也就是整个dicom image目录所包含的完整头部扫描图像数目,等于整个dicom image目录下所有单个slice dicom image文件除于实验时设置的slices数。
中文教程全集

中文教程全集中文教程是一套全面详尽的学习中文的教材,旨在帮助学习者系统地掌握中文语言和文化。
本教程以初级、中级和高级三部分组成,分别适合不同程度的学习者。
本文将逐步介绍这套教程的内容,并对其重要性和使用方法进行探讨。
第一部分:初级教程初级教程是中文教程全集的第一部分,适合零基础的学习者。
这部分教程主要介绍中文的基础知识,包括拼音、基本词汇和语法等。
通过学习初级教程,学员可以初步掌握中文的发音和基本词汇,为进一步学习打下基础。
第二部分:中级教程中级教程是中文教程全集的第二部分,适合有一定中文基础的学习者。
这部分教程进一步拓展了学员的中文能力,包括语法、听说读写等方面的训练。
学员通过学习中级教程,可以提高中文的理解和表达能力。
第三部分:高级教程高级教程是中文教程全集的最后一部分,适合已有较好中文基础的学习者。
这部分教程注重提高学员的语言运用能力和文化素养。
通过学习高级教程,学员可以学习复杂的语法结构、文化背景知识和专业术语,提升自己在中文环境中的交流能力。
中文教程全集的重要性中文教程全集是一套系统完整的中文学习教材,具有以下重要性:1.全面性:中文教程全集包含了中文学习的各个方面,从听、说、读、写到文化背景,让学习者能够全面掌握中文语言和文化的知识。
2.有层次性:中文教程全集根据学习者的不同水平设立了不同的部分,学员可以根据自己的实际情况选择合适的教程进行学习,帮助他们逐步提高中文水平。
3.规范性:中文教程全集以标准的中文语法为基础,让学习者能够学到正确的中文表达方式,培养良好的语言习惯。
中文教程的使用方法学习者可以按照以下方法使用中文教程全集:1.确定自己的学习目标:在开始学习之前,学习者应该明确自己希望达到的中文水平和学习的时间安排。
2.选择适合自己的教材:根据自己的中文水平选择合适的部分进行学习,初级教程适合零基础学习者,中级教程适合有一定基础的学习者,高级教程适合已有较好基础的学习者。
3.学习方法多样化:中文教程全集提供了丰富的学习材料,包括课文、习题、听力材料等,学习者可以根据自己的喜好和实际情况选择适合自己的学习方法。
SPM操作步骤

第一步Realign,选estimate&reslice,结果生成mean文件。
第二步Coregister,先选择Coregister estimate ,reference选择mean文件,source image 选择解剖像文件,然后选Coreg reslice,Image Defining Space和Image to reslice都选解剖像文件,run第三步是Normalise, A:选estimate&Write ,source文件选择解剖像文件,image to write选择还是解剖像文件,Estimation里 template选择SPM自带的标准解剖像(template T1)文件,Write options里体素大小改为1 1 1,运行。
B:然后功能像也要再做一遍,这次选择write,parameter选择sn.mat文件(解剖像里),image to wright选择功能像文件(rb文件),Write options里体素大小改为3 3 3,再运行。
第四步,smooth平滑(wr文件)。
半宽全高改为 6 6 6,再运行数据分析:选择Specify 1st-level选择路径,,unit选择scan,输入TR时间,然后scans选择功能像文件(swr文件),然后condition里name命名,onsets 1:20:120,duration输入10,其他都可以用默认值。
然后run,再estimate(SPM.mat)。
结束后点result,左下角define new contrast,选t test, contrast输入1,done。
最后在xjview里调用SPMT文件。
如果加解剖像,选择other里找解剖像文件。
标准过程手册(SPM)修订版说明书

Standards AnnouncementStandard Process Manual Revisions to Implement SPIG RecommendationsFormal Comment Period: August 29, 2012 – October 12, 2012Initial Ballot: October 3-12, 2012Available NowThe revised Standard Processes Manual (SPM) has been posted for a formal comment period and initial ballot:•August 29-October 12, 2012: 45-day Formal Comment Period•August 29-Setember 28, 2012: Join Ballot Pool•October 3-12, 2012: Initial BallotInstructions for CommentingPlease use this electronic form to submit comments. If you experience any difficulties in using the electronic form, please contact Monica Benson at **********************. An off-line, unofficial copy of the comment form is posted on the project page.Please read carefully: All stakeholders with comments (both members of the ballot pool as well as other stakeholders, including groups such as trade associations and committees) must submit comments through the electronic comment form. During the ballot window, balloters who wish to submit comments with their ballot may no longer enter comments on the balloting screen, but may still enter the comments through the electronic comment form. Balloters who wish to express support for comments submitted by another entity or group will have an opportunity to enter that information and are not required to answer any other questions.Joining the Ballot PoolRegistered Ballot Body members must join the ballot pool to be eligible to vote in the upcoming ballot on revisions to the Standard Processes Manual and may join the ballot pool at the following page: Join Ballot Pool.During the pre-ballot window, members of the ballot pool may communicate with one another by using their “ballot pool list server.” (Once the balloting begins, ballot pool members are prohibited from using the ballot pool list server.) The ballot pool list server for this ballot pool is:****************************The ballot pool is open through 8 a.m. Eastern on Friday, September 28, 2012.Next StepsThe Standards Committee Process Subcommittee subteams will meet in October to review all comments received and determine what revisions are necessary to finalize the SPM. If no significant changes are made, the SPM will be posted for a recirculation ballot and, if approved by the stakeholder body, presented to the NERC Board of Trustees for approval.BackgroundAt its February 9, 2012 meeting, the NERC Board of Trustees (BOT) requested the assistance of the NERC Member Representatives Committee (MRC) to provide policy input, and a proposed framework, for specific improvements to the standards development process. The MRC Chair and Vice Chair invited several members of the MRC, two NERC BOT members, the NERC CEO, and the Standards Committee (SC) Chair – the group collectively known as the Standard Process Input Group (SPIG) – to join with them as participants in developing recommendations to improve the standards development process.To help ensure that the SPIG focused its efforts on the most important areas for improvement, the group began its work by gathering input from subject matter experts, including the regions, the MRC, standard drafting team leaders, NERC staff, and other stakeholders. This input was collected through a series of interviews, supplemented by a formal survey. Based on that input, the SPIG produced a document with five recommendations to modify the way NERC develops Reliability Standards and other solutions intended to improve the priority, product, and process of standards development:1.American National Standards Institute (ANSI): NERC should continue to meet the minimumrequirements of the ANSI process to preserve ANSI accreditation.2.Reliability Issues Steering Committee (RISC): The NERC BOT is encouraged to form a RISC toconduct front-end, high-level reviews of nominated reliability issues and direct the initiation of standards projects or other solutions that will address the reliability issues. (Note that the RISC was formed during the August 16 BOT meeting.)3.Interface with Regulatory and Governmental Authorities: The NERC BOT is encouraged to taskNERC management, working with a broad array of Electric Reliability Organization resources(e.g., the MRC, technical committees, Regional Entities, trade associations, etc.) to develop astrategy for improving the communication and awareness of effective reliability risk controls to increase input and alignment with state, federal, and provincial authorities.4.Standards Product Issues: The NERC BOT is encouraged to require that the standardsdevelopment process address the use of results-based standards; cost effectiveness ofstandards and standards development; alignment of standards requirements/measures withReliability Standards Audit Worksheets (RSAWs); and the retirement of standards no longerneeded to meet an adequate level of reliability.5.Standards Development Process and Resource Issues: The NERC BOT is encouraged to requirethe standards development process to be revised to improve timely, stakeholder consensus insupport of new or revised reliability standards. The BOT is also encouraged to require standard development resources to achieve and address formal and consistent project management and efficient formation and composition of standard drafting teams.The recommendations also aim to strengthen consensus building, first on the need for a standard, and then on the requirements themselves. Further detail is available in the posted SPIG report.These recommendations were presented to the BOT and approved on May 9, 2012. The SC was specifically charged with addressing SPIG Recommendations 1, 4, and 5. The SC has organized this effort by leveraging each of its subcommittees, the Process Subcommittee (SCPS) and the Communications and Planning Subcommittee (SCCPS), to work in parallel on developing proposed revisions and conducting outreach to industry stakeholders to ensure that all interested stakeholders have an opportunity to provide their input.On June 20, 2012, the first draft of SPM revisions was posted for a 30-day stakeholder comment period. The SCPS, supported by NERC staff, has spent the last several weeks reviewing this feedback, revising the proposed SPM as necessary, and responding to stakeholder comments. The proposed revisions to the SPM are included in the posted redline version of the document, and can be summarized as follows:•Clarification of the requirements for responding to stakeholder comments during informal and formal comment periods•Retention of the concept of including ‘no’ ballots that are not accompanied by comments in the calculation of quorum, but not being counted in the calculation of consensus; elimination of the evaluation of comments submitted alongside a ‘no’ vote to determine relevance •Clarification of the proposal to move measures from standards to RSAWs•Removal of the proposal to eliminate VRFs and VSLs from standards•Clarification of the handling and purpose of interpretations•Clarification of the intent of the waiver provision in section 16.0The SC, its subcommittees, and NERC staff are grateful for the industry participation on this project to date, and encourages stakeholders to continue to offer feedback on the proposed SPM revisions so that the SC can deliver a significantly improved process in a timely fashion.Additional documentation is available on the project page.For more information or assistance, please contact Monica Benson, Standards Process Administrator, at ********************** or at 404-446-2560.North American Electric Reliability Corporation3353 Peachtree Rd, NESuite 600, North TowerAtlanta, GA 30326404-446-2560 | 。
spm99手册

SPM99歷史SPM系列軟體與所相關理論最初由Karl Friston發展,為對於由正電子放射攝影法(PET)所得之神經系統機能數據的常規性之統計分析,此軟體於1991年推出,可並容利用於近年所發展之新功能影像,並有成立相關數據分析與計畫之研究實驗室。
SPM99介紹Statistical Parametric Mapping,為一軟體用來幫助我們對於從SPECT、PET或fMRI等腦神經系統功能的相關影像資料研究,對於在空間上所延伸出的統計過程中,利用估計與重建方式,提供了我們測試和參考。
目前這種將測試與影像以具體方式所表現出來的軟體,稱為SPM。
在過去,作腦部半定量分析時,常常需要人工手動圈選ROI,然後測量其計數值,之後使用統計軟體處理實驗數據,如Microsoft Excel做資料統計,來比較差異性。
但通常因不同人所圈選之位置、大小不同,而造成人為誤差,只能得到資料數據上的變化,對於整體形而言反而無從比較,因此SPM的所提供的測試和參考以及資料統計方式,對我們來說較有整體比較與降低人為誤差的可能。
大概來說,SPM是結合受試者影像和統計方法的軟體,藉由對於影像中體(Voxel)和體素之間所含差異值的統計比較,使影像在標準空間上較為正常與平滑,其參數統計模型假定於每個體素上,再使用一般的線性模型去描繪出其數據在經數次測試後所餘變化量以及影像受模糊影響的變化,再經測試表現出估計體素而得的模型參數的相關統計資料,藉由它可知一影像所含體素的統計資料與其統計所成影像或是統計參數表(SPM{t}, SPM{Z}, SPM{F}),如在f MRI應用上,一般線性模型所含疊積因連續性相關退化的結果,而使在f MRI 時間序列上產生相關統計的影像。
而對於在同時間所有體素統計資料倍數之比較,是利用假設其統計影像為晶格所表現出一個基礎且連續穩定之任意域,再利用尤拉特性去修正每一體素所測得的P值。
並允許計算所修正的P值對叢集體素上會超過一閾值,且整體叢集固定之前閾值,導致局部更有效的統計測試。
SPM数据处理流程

本次演示数据是采自于SIEMENT 3.0T的MR,用到其中的2个序列:全脑解剖像t1_mpr_ns_sag_p2_iso功能像扫描ep2d_bold_moco本示例所用的刺激方案是经典棋盘格的视觉刺激。
具体刺激时间安排见下图PPT2SPM是一款以MA TLAB为平台的软件,所以使用SPM前一定要安装MA TLAB。
SPM一般来说根据个人习惯放在电脑的不同位置。
本文所讲的SPM放在C盘的根目录下。
PPT3设置SPM的路径指定数据所在目录(提示:数据目录不要用中文,否则spm使用过程中会出现乱码)指定完目录后,数据文件在左边栏就可见。
二、SPM使用1.数据导入2.数据预处理3.数据分析启动SPM(可直接spm fmri 回车)数据导入(GE的数据没有问题,大多数的siemens也没问题,但philip的数据直接导不行,建议用mricroN里的的dcm2nii)数据输入之选择MR扫描的DICOM图像选择文件夹保存输出文件选择好相应的文件夹后,单击“.\”选择输出文件格式(可以根据习惯选择,都可用,spm5也支持4d的数据)开始转换上面讲的是如何导入数据\如何导出并保存处理完成的数据下面讲如何进行预处理Realign 头动校正,也称对齐;因为在扫描的过程中被试不可避免会发生头动现象,此功能就是把整个实验中的头动造成的影响缩减到最小。
选择功能像文件选中经过转换的功能图像文件(f开头的文件)当“Run”键变黑就说明已经可以开始运行了经过“Realign”的文件名前会加上字母“r”,同时会生成mean文件等处理结束后,会出现头动曲线,上图显示的是在X、Y、Z三个轴向的平移,下图显示的是在3个方向上的旋转。
如果旋转超过0.5度,或者平移超过半个体素,就可以认为这个volume的数据质量不好,可以抛弃这个时间点的数据。
我的建议是质量不好的数据就重扫,实在没办法可以舍弃个别点的数据,但需要记录相应的时间点,在design时候去除,也可以用相邻数据的平均值替代。
SPM中文教程汇总已修订版

S P M中文教程汇总已 Document number:PBGCG-0857-BTDO-0089-PTT1998一、SPM的安装与启动先安装matlab,然后将SPM复制到matlab下的一个文件夹(SPM2需要或以上版本)。
启动matlab,首先set path,然后在matlab命令窗口中输入SPM即可启动,然后选择fMRI,也可以直接输入SPM fMRI二、SPM数据处理概要先将所得数据进行空间预处理(对齐,平滑,标准化等),然后进行模型估计(将刺激的时间、间隔与血流动力函数进行卷积,所得结果与全脑象素信号进行相关分析),最后察看结果。
三、SPM8数据处理的一般步骤为方便后续的数据处理,如果数据分散处理后整合,建议所有处理数据路径保持一致,要统一路径。
处理前首先要采用数据转换软件将dicom数据转换成SPM解析格式,然后进行数据预处理,预处理结束后到matlab安装目录中备份spm*.ps文件,其中包含了空间校正和标准化的信息,然后进行建模分析。
运行命令:spm fmri,打开spm8的操作界面我们称左上侧的窗口为按钮窗口(button window),左下侧的窗口为输入窗口(input window),右侧大窗口为树形结构窗口或图形窗口(Tree Building Window or the graphics window)。
在spm8和spm5中,每一步处理都采用了直观的“树形结构”的面板,如果一个分支项左面有“+”号,你可以双击显示子分支项,如果一个分支项右面有“<-X”号,你必须为之指定选项(否则不能运行该tree),分支项的选项在其右侧面板指定,而帮助信息则在下面的面板中显示。
如果我们处理数据没有特殊需求,我们只关心带有“<-X”项目并完成输入即可,其余均可采用默认设置。
另外注意在Tree Building Window的顶部菜单,新增了一个菜单项“TASKS”,在使用批处理分析时非常重要。
SPM5数据分析简明教程-北师大fMRI培训班

SPM5数据分析简明教程编写人:张寒Email: napoleon1982@导师:朱朝喆(研究员,博士生导师)Email: czzhu@/home/chaozhezhu/北京师范大学认知神经科学与学习国家重点实验室Lab1 SPM5的安装和介绍实验内容1.Matlab 7.1简要介绍2.SPM5简要介绍Matlab 7.1简要介绍1.主界面在所有实验中,我们都将使用Matlab 7.1软件包。
在Matlab安装完毕后,双击快捷方式图标打开Matlab。
点击Matlab窗口上方的View菜单,勾选Command Window, Command History, Current Directory和Workspace。
这时,Matlab将呈现四个子窗口(图1):1)Command Window:位于右下方。
即指令窗口,是键入指令的地方,也是Matlab显示计算结果的地方;2)Command History:位于左下方。
即历史命令窗口,存放历史输入命令;3)Current Directory:位于左上方。
即当前工作目录,显示当前目录下的文件信息;4)Workspace:位于右上方。
即工作空间,存放变量在内存中。
图1 Matlab 7.1的主界面此时,Matlab处于准备接受命令的状态,可以在命令窗口(右下方的子窗口)中直接输入命令语句。
2.基本命令1.设置当前工作路径 (current directory)设置当前工作路径可以让Matlab知道你要在那个地方进行数据处理。
1)在Windows下建立一个新文件夹,如:D:\work\dicom_convert\2)例如把该目录设为工作路径:在Matlab的指令窗口中键入:cd ‘D:\work\dicom_convert\’ (注意,单引号必不可少)。
这样,就将Matlab的当前工作路径设置在上述路径下了。
2.添加搜索路径(set path)添加搜索路径是一些基于matlab的工具包常用的安装方式。
SPM5数据分析简明教程-北师大fMRI培训班

SPM5数据分析简明教程编写人:张寒Email: napoleon1982@导师:朱朝喆(研究员,博士生导师)Email: czzhu@/home/chaozhezhu/北京师范大学认知神经科学与学习国家重点实验室Lab1 SPM5的安装和介绍实验内容1.Matlab 7.1简要介绍2.SPM5简要介绍Matlab 7.1简要介绍1.主界面在所有实验中,我们都将使用Matlab 7.1软件包。
在Matlab安装完毕后,双击快捷方式图标打开Matlab。
点击Matlab窗口上方的View菜单,勾选Command Window, Command History, Current Directory和Workspace。
这时,Matlab将呈现四个子窗口(图1):1)Command Window:位于右下方。
即指令窗口,是键入指令的地方,也是Matlab显示计算结果的地方;2)Command History:位于左下方。
即历史命令窗口,存放历史输入命令;3)Current Directory:位于左上方。
即当前工作目录,显示当前目录下的文件信息;4)Workspace:位于右上方。
即工作空间,存放变量在内存中。
图1 Matlab 7.1的主界面此时,Matlab处于准备接受命令的状态,可以在命令窗口(右下方的子窗口)中直接输入命令语句。
2.基本命令1.设置当前工作路径 (current directory)设置当前工作路径可以让Matlab知道你要在那个地方进行数据处理。
1)在Windows下建立一个新文件夹,如:D:\work\dicom_convert\2)例如把该目录设为工作路径:在Matlab的指令窗口中键入:cd ‘D:\work\dicom_convert\’ (注意,单引号必不可少)。
这样,就将Matlab的当前工作路径设置在上述路径下了。
2.添加搜索路径(set path)添加搜索路径是一些基于matlab的工具包常用的安装方式。
fMRI数据分析系统SPM原理与应用讲课文档

第36页,共61页。
为什么要考虑这些干扰因素?
Linear Trend
Probable
Respiration
Artifact
Effect/Error
head motion
parameters
第37页,共61页。
Single-subject Analyses
基本过程与原理 GLM
fMRI数据分析系统SPM原理与应用
第1页,共61页。
fMRI数据分析系统SPM原理与应用
第2页,共61页。
fMRI研究框架
科学问题
实验假设
实验设计
结果解释
数据统计 分析
被试招募与 扫描
SPM, AFNI, FSL, VoxBo
第3页,共61页。
SPM 版本历史
The forthcoming version is SPM5 The current version is SPM2 Previous versions
↔ x1–x2 ↔ [1 -1]
x1 –x2
E
(x1 –x2)
第43页,共61页。
Single-subject Analyses
基本过程与原理 GLM
Principle of GLM
Design Matrix Solution to GLM Effect of Interest & statistics
stimulus
G1
G (stimulating) Gc
H (non-interesting)
H1 Hc
Linear trends
due to MRI scanner
Design matrix X
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、SPM的安装与启动先安装matlab,然后将SPM复制到matlab下的一个文件夹(SPM2需要matlab6.0或以上版本)。
启动matlab,首先set path,然后在matlab命令窗口中输入SPM即可启动,然后选择fMRI,也可以直接输入SPM fMRI二、SPM数据处理概要先将所得数据进行空间预处理(对齐,平滑,标准化等),然后进行模型估计(将刺激的时间、间隔与血流动力函数进行卷积,所得结果与全脑象素信号进行相关分析),最后察看结果。
三、SPM8数据处理的一般步骤为方便后续的数据处理,如果数据分散处理后整合,建议所有处理数据路径保持一致,要统一路径。
处理前首先要采用数据转换软件将dicom数据转换成SPM解析格式,然后进行数据预处理,预处理结束后到matlab安装目录中备份spm*.ps文件,其中包含了空间校正和标准化的信息,然后进行建模分析。
运行命令:spm fmri,打开spm8的操作界面我们称左上侧的窗口为按钮窗口(button window),左下侧的窗口为输入窗口(input window),右侧大窗口为树形结构窗口或图形窗口(Tree Building Window or the graphics window)。
在spm8和spm5中,每一步处理都采用了直观的“树形结构”的面板,如果一个分支项左面有“+”号,你可以双击显示子分支项,如果一个分支项右面有“<-X”号,你必须为之指定选项(否则不能运行该tree),分支项的选项在其右侧面板指定,而帮助信息则在下面的面板中显示。
如果我们处理数据没有特殊需求,我们只关心带有“<-X”项目并完成输入即可,其余均可采用默认设置。
另外注意在Tree Building Window的顶部菜单,新增了一个菜单项“TASKS”,在使用批处理分析时非常重要。
以下内容,还可以参考E:\《汇总》中“静息态fMRI的数据预处理流程”这部分的讲述。
1、转换数据dicom格式转换为img文件,将以层为单位的数据转换成以全脑为单位的数据。
转换时格式请选择NIfTI,可用SPM输入面板中的DiCOM Import模块转换,也可以采用专门的转换软件,如MRIcovert。
2、Slice timing校正1个volume中层与层之间获取(采集)时间的差异,即纠正slice(下译为扫描层)之间采集时间的差异。
这对事件相关设计的实验尤为重要,使一个TR中的各层获得时间一致(如都在一个TR的开始),相当于AFNI中tshift所做的工作。
校正后的新文件名为:a+原文件名。
原理概述:Sliceorder(扫描层序数)用于指明扫描层被采集时的顺序,其总数为n,n即一个volume (volume为一个TR时间内的扫描量)里面所包含的扫描层的总数。
每个Sliceorder(扫描层系数)同时指明了每个扫描层在图像文件中的存储位置。
因此扫描层系数表明了扫描层被采集时的时间顺序。
我们可以用SPM的Display功能来查看这个顺序。
移动鼠标的十字准线到Z 坐标为1的位置时,我们看到的就是一个volume里面第一个slice(扫描层)上的象元(voxel)。
核磁仪采集数据的时间精度为一个TR,因此我们通常默认一个TR内采集到的数据(一个volume)采自完全相同的时间。
但事实并非如此,一个TR内我们需要采集很多扫描层(例如20层)的数据以覆盖较大的脑区(通常是全脑)。
这些扫描层是一个接一个按照上面所说的sliceorder(扫描层序数)的顺序来采集的,因此各个扫描层之间的采集时间是有差异的。
Slice timing这一步所要做的就是通过一定的算法纠正这一时间差异。
常规的纠正方法是在保持整段采集信号不变的条件下推前或者推后采集的起始时间。
这可以通过简单的移动采集信号的正弦相位来做到。
一种常用的数学转换方法:傅立叶转换可以把任何复杂信号转换为由不同频率和相位的简单正弦曲线的线性组合。
这样,只要通过加入一个常数到每个频率的相位中,就可以达到移动数据起始和结束时间的目的。
我们在按钮窗口中的预处理面板中点击“Slice Timimg”,将出现如下对话框:对上图右侧选项我们做如下设置————Data,预备数个被试或者session的数据。
以下所述参数设置将被应用到所有所选数据。
点击data 并在下面的面板中点击“new session”,这样在data下会出现“session”的分支项,选中该项并点击面板下方的“select files”,然后用spm文件选择器选择你要处理的数据,最后点击“Done”。
选择数据时可以把静息态、数值任务和物理大小任务分为三个session来选(data——new session——session),也可以作为一个session来选,结果是一样的。
Number of Slices,我们输入每祯图像的层数,如“32”,即扫描层总数。
TR,我们输入重复时间,一般为2秒,我们输入“2”TA,是每祯图像获取第一层开始到获取最后一层图像的时间间隔,单位为秒。
一般可以用以下公式计算:TA=TR-(TR/扫描层数)。
这里可以不必计算出结果,直接写上带入了数字的公式就可以了。
比如,TR为3秒,扫描了20层,则可以直接写为:3-(3/20)。
我们的数据则输入“2-2/32”Slice order,输入扫描顺序。
如前述此顺序可通过SPM的Display功能查看。
我们输入“1:2:31, 2:2:32”。
指定层获取顺序的层次序参数是一个含N个数的向量,这里N是每个volume所含的层数。
每一个数表示该层在图像(volume)中的位置。
向量内的数字排列顺序是这些层的获取时间顺序。
如行向量[1 3 5 7 9 11 13 15 17 19 21 23 25 2 4 6 8 10 12 14 16 18 20 22 24](在Matlab中可表示为[1:2:25,2:2,25]) 各种扫描类型和输入的层顺序如下:ascending 升序扫描(first slice=bottom,扫描序数从底部到顶部排列,即从1顺序递增到n): [1:1:nslices];descending 降序扫描(first slice=top,扫描序数从顶部到底部排列,即从n顺序递减到1): [nslices:-1:1];interleaved 间隔扫描(扫描序数间隔递增或递减,一般顺序为2,4,6,8,10..1,3,5,7,9..n)(middle-top):for k = 1:nslices,round((nslices-k)/2 + (rem((nslices-k),2) * (nslices - 1)/2)) + 1,end;interleaved (bottom -> up): [1:2:nslices 2:2:nslices],如[1:2:25,2:2,25];interleaved (top -> down): [nslices:-2:1, nslices-1:-2:1]Reference Slice,我们输入“31”。
选择参考扫描层(一般可使用默认值),其它扫描层的起始时间都将以此层的起始时间为标准来移动进行校正。
通常选择n slice/2,如25层时选择13层作为参考层。
Filename Prefix,是指新生成的图像前加何标记,一般采用默认设置。
最后点击面板上方的向右的绿色三角即开始运行。
运行完后将会生成一系列a*.img文件,这就是时间校准后的数据。
注意很多研究者容易将时间校准和空间校准顺序颠倒,一般的观点是如果图像获取是隔层(interleaved)进行的,如1、3、5、7、9、2、4、6、8、10,则要先进行slice timing 再进行realign,如果图像各层是连续(sequential)获取的,如1、2、3、4、5、6、7、8、9、10,则要先进行realign再做slice timing。
(为什么?)3、Realign(相当于AFNI中的registration)分两步:1)coregister,将每个session的第一个scan与第一个session的第一个scan进行比较,然后将每个session中的其他scan与本session中的第一个scan进行比较,得到每个filename.img文件的转换参数,生成filename.mat文件,同时为每个session生成一个对齐参数(realignment parameters),文件名为realignment_params_*.txt2)reslice,用filename.mat文件对filename.img重新切片,生成rfilename.img文件。
并可依选择生成一个平均象,名为meanfilename.img。
以上两步具体解释如下——即使我们对被试的头部做了很好的固定,在实验过程中,被试也会不由自主的有一些轻微的头动,这在fMRI实验中尤为明显。
这一步就是把一个实验序列中的每一帧图像都和这个序列的第一桢图像按照一定的算法做对齐,以矫正头动。
做完这一步,能给出该序列中被试的头动情况,以作为是否放弃该数据的依据,如果头动超过1个voxel(功能图像扫描矩阵一般是64*64,则体素的大小为(FOV/64)*(FOV/64)*(层厚+层间距)),则要考虑放弃该时间点数据。
该程序利用最小二乘法(least squares approach)原理和含6个参数(刚体模型)的空间变换,对从一个被试获取的时间序列进行校正。
用户可指定某个volume作为随后volumes的参考。
可以是第1个volume,也可选择比较有代表性的volume(更明智的选择),例如选择磁场相对稳定的第4个volume。
校正信息(头动信息)将在结果窗口(Graphics Window)显示。
每个Session的校正信息将存储为rp*.txt,其中*为Session数据集名称。
另外,头动校正信息将以plot 图形显示。
如下图:Translation表示被试头部在X,Y,Z三个方向的平移,分别用蓝,绿,红三种颜色表示。
Rotation表示被试头部在实验过程当中绕X(L-R),Y(A-P),Z(S-I)三条轴的转动角度。
横坐标代表这个序列所采集的所有图像,纵坐标表示的是偏移量和偏转角度,分别以毫米和度为单位。
采用SPM8,头动信息和空间标准化的图形文件将以spm_“data”.ps的形式保存于matlab的工作目录下,如我们是2009年4月30日处理的数据,则将以spm_2009Apr30.ps文件存于matlab的work目录下。
我们在预处理面板校准选项中选择“Realign (Est & Res)”,出现如下对话框,我们按下面设置进行:选中“data”, 选择“New Session”, 然后选中data下出现的“Session”选项。