10 PSYCHTOOLBOX工具箱及MATLAB编程实例 >inf/infk NaN 可以使用isinf和isnan函数来检验某数是否是无穷大或非数值。 2.2字符型 MATLAB中的字符串为Unicode字符数组,即每个字符都有对应的一个数值,定义字符串只需将 字符内容置于单引号之内即可,例如 >school-'Soochow University' school Soochow University >whos schoolk Name Attributes school 1x18 变量school中包含18个字符(空格计在内),类型为字符型(char) 函数ischar可以判断某变量是否为字符型,可以使用函数strcat和strvcat进行字符串的横向和纵 向拼接,char函数也可以进行纵向拼接,例如 >sl=strcat ('Hello','everyone') >>s2=strvcat ('Hello','everyone') 82= Hello everyone >s3-char('Hello','everyone') 83_ Hello evervone >whos s1 s2 33k Name size Bytes Class Attributes 82 2x8 24 char s3 2x8 24 char 可以看出函数strvcat和char会在较短字符串后添加空格,以使每个字符串等长,strcat函数在横 向拼接时会忽略字符串末尾的空格,例如 >strcat ('Hello 'everyone') ans Helloeveryone 避免这种情况的一种简便方法就是使用拼接运算符D进行横向拼接,但在使用其进行纵向拼接时 要确保每个字符的长度相同,例如 >s1=['Hello' 'everyone'] s1=
第2章数据类型 11 Hello everyone >s2-['Hello';'everyone'] s2= Hello everyone char函数可以将ASCT码转换为对应的字符,例如 >char(32:127) ar98e0*-,/o123456789:o0ec9eroo80aqR5TUmzN-abcof9h ijklmnopqrstuvwxyz()~ 2.3日期时间型 MATLAB用于表示日期的格式有多种,可以以字符串形式表示,也可以以向量形式或者序列日期 表示(公元0000年1月1日定义为序列1,然后距离该日期的天数即为某日期的序列日期数)。 >date ans 06-Ju1-2011 >whos ansk Attributes ans 12090 0.0070 0.0060 0 0.02700.0011 >whos clock Name size Bytes Class Attributes ans 1x6 48 double an.5469e+005 2.4单 元 单元是MATLAB中的一种特殊类型,它可以存储不同类型的数据,一般通过以下形式来建立单 元(数组),将单元存储的数据放在)内,例如 >c1-(12:34:561k [3x2doub1e】 单元c1为包含3×2的二维浮点数组,如果向c1中增加其他内容,则变为单元数组, >》c12)'e1lo,everyone门:k Name Size Bytes class Attributes
12 PSYCHTOOLBOX工具箱及MATLAB编程实例 2×2 346 cell 可以通过函数celldisp来显示单元(数组)中的内容 c1(1,1}= 3 6 86a2 c11,21= Heilo everyone c12869e+05 如果要显示其中某个元素的内容,则需要使用,例如 >c11,1)g ans 1 5 6 2.5结 构 结构数据类型适合于根据自己的需要定义具有不同含义的字段,并且其中可以包含任何类型的数 据,如在被试信息结构中可以包含姓名、性别、年龄、专业和优势等,可以这样定义上述结构信息, >>subiect.name-'张三':C >subject.eye-'Left'; hology'; >whos subject Name Size Bytes class Attributes subiect 1×1 668 struct >subject subject- gender:'Male' age: 18 major: 如果要定义多个技试对可以采用结构数组的形式。下面利用函数来建立结构数组。 >subject(2:3)=struct('name',('李四','王五'),'gender',{'Female','Male'), 'age',(20 19),'major',('English','Maths'),'eye',('Left','Right')); 如果要查看某被试的信息,则可以通过索引来查看,例如 >subject(2) ans
第2章数据类型 13 age: Left 如果要显示或引用某个字段的内容,使用运算符即可,例如 >subject (:)name 或者将结果放入某数组中, >>【subiect(:).age】C an182019
第3章MATLAB编程基础 3.1常数与常量 常数或常量是其值不会发生变化的量,有的是常数,如圆周率:有的是通过函数返回的与系统有 关的固定值,如M4TLAB的安装路径、计算机操作系统等。既可以在命令窗口中获取这些值,也可 以在程序中使用这些值,例如 >pi >version化 9010.594R2010 >1 ntmax('int32')化 ans■ 214748364 >realmink an8.251le-300 3.2变 量 变量相对于常数而言,是可以变化的一个值,它可以是数值、字符、日期、单元、结构等类型的 数据。MATLAB不同于C语言,不需要事先声明变量,可以在任何需要的时候直接对变量进行赋值, M4TLAB会自动建立变量并分配内存空间。变量就如同某个值的别名一样,对变量进行操作就是对变 量所表示的值的操作。 在MATLAB中定义的变量名必须以字母开头,其后可以组合数字、下画线,但中间不可以有空 格,另外不能使用M4TLAB中已经定义的函数名和关键字,变量名的长度没有限制(足够用),区分 大小写(即变量abc和Abc不同),变量名最好具有可读性,还要注意减少重复定义变量的机会,避免 由于使用相同变量名而更改具有不同意义的值。 下面的变量名是合法的,Myfile、picturenames、ml、file type、tempstr、fhandle:下面的变量是 非法的,36le、fileab、data-ml、fles9 3.3变量类型 3.3.1局部变量 在函数体内定义的变量为局部变量,只能被定义的函数所访问,函数运行结束,局部变量所占用 的内存空间自动释放(局部变量也,就不存在了),不同的函数可以使用相同的局部变量名,因为不同的 函数有独立的存储空间