MATLAB概述和编程基础预备知识●线性代数基础●常用编程语言(如C,C++)的编程基础●心理物理学实验中的组间、组内设计及随机化知识●本章要点●了解MATLAB及其特性●熟悉MATLAB基本操作●通过MATLAB进行基本的数值运算●掌握心理物理学实验设计中常用的MATLAB函数●编写简单的MA TLAB程序并进行调试●导言心理学作为一门建立在实验基础上的科学,该领域内的任何结论都离不开实验证据的支持。
随着心理学研究的深入,各种实验方法层出不穷,对实验精度的要求越来越高,与之相对应的数据处理手段也愈发丰富。
在这样的趋势下,单纯依赖传统的编程软件(如C、C++)和数据处理工具(如SPSS、SAS)已经无法满足心理学研究者对于实验的需求。
为了更好地开展心理学实验研究,研究者们需要更加全面、精确、便利的编程工具,用于辅助他们展开实验研究。
在本书中,我们将为大家介绍一门在诸多领域内都有着广泛应用的编程软件MATLAB,并着重介绍它在心理学领域内的应用。
MATLAB是MAT rix LAB oratory的缩写,它最初是美国新墨西哥大学Cleve Moler教授编写的LINPACK和EISPACK接口程序。
随后Cleve Moler教授又同工程师Jack Little一起重新编写了MA TLAB,并且于1984年成立了MathWorks公司,将这款编程软件推向市场。
作为第四代编程语言,MA TLAB拥有着广泛的应用,包括数值计算、数据挖掘、数学建模、可视化等等,并且与C、C++、Java和Python等多种编程语言兼容,目前已经成为数值计算软件的佼佼者,并被广泛应用于科学研究。
图1:MA TLAB创始人Jack Little(左图)和Cleve Moler(右图),图片来自/在本章节中,我们将带领大家初步认识并了解MATLAB。
作为一门编程语言,MA TLAB有区别于其他编程语言的特点,这些特点能够帮助我们通过MATLAB 进行高效的数据处理。
通过学习本章节,我们将了解MATLAB 的特性和编程规则,学习如何通过MATLAB 进行简单的数据处理。
进一步,我们还将学习如何通过MATLAB 编写、调试简单的程序,并初步了解一些在心理物理学实验中常用的MATLAB 函数。
2.1 MA TLAB 的编程环境同其他的编程工具一样,MATLAB 也有着自己独特的编程环境和编程语言。
MATLAB 的编程环境是指MA TLAB 软件可提供的所有辅助程序设计的工具和应用的总称。
它包括编辑器(Editor )、命令窗口(Command Window )、工作空间(Workspace )等。
与之相对应的,MATLAB 的编程语言是指可以在MA TLAB 环境中执行,符合MATLAB 环境语法要求的计算机语言。
它不仅包括MA TLAB 特有的M 文件(包括MA TLAB 特有的数据类型、运算符、程序结构等等),也包括了在混合编程时可以兼容的其他编程语言(如C 语言,不做详细介绍)。
为了了解MA TLAB 是如何工作的,我们将从这两个角度分别介绍MATLAB 的特性(如图2),从而帮助大家对MATLAB 形成初步的印象。
图2:MA TLAB 特性简介2.1.1 MATLAB 编程环境简介正如我们之前所描述的,MATLAB 的编程环境包含一系列可以辅助我们设计程序的工具和应用。
为了形象化地了解这些工具和应用,我们可以通过打开MA TLAB 的主窗口来形成对MATLAB 的编程环境的初步印象。
点击MATLAB 图标,打开MA TLAB 主窗口。
图3:MA TLAB 主窗口从图3的MA TLAB主窗口中我们可以清楚地看到MATLAB的编程环境,包括最左侧的当前路径(Current Directory),中间的命令窗口(Command Window)和最右侧的工作空间(Workspace)以及命令行历史(Command History)。
我们可以通过直接拖拽这些窗口的上边缘来重新布局窗口。
同时,当我们点击图3左上方红色窗口内的图表时,就可以打开编辑器(Editor),在这里即可编写MATLAB的代码,并生成MATLAB可运行的m文件,如图4所示。
图4:MA TLAB编辑器在直观地了解了MA TLAB的编程环境之后,我们将重点介绍三个需要经常使用的编程环境,即命令窗口、工作空间和代码编辑器。
为了更加准确地了解这些编程环境,我们首先给出一段示例代码:diary my_diary.txta = 1;b = 2;c = 3;save ws a b;clear all;load ws;diary off;这段示例代码的目的在于(1)产生三个取值分别为1、2、3的变量a、b、c,将变量a 和b保存到一个文件名为ws.mat的文件中;(2)清除所有的变量,并读入ws.mat这个文件;(3)最终将所有这些代码保存到一个文件名为my_diary.txt的文件中。
我们将以这段代码为示例,分别描述命令窗口、工作空间和代码编辑器着三个编程环境的功能。
命令窗口:在命令窗口中我们可以直接输入MATLAB的代码并执行。
将上述代码逐行输入到命令窗口中,按回车键(Enter)即可执行代码功能。
命令窗口也允许用户同时执行多行代码(例如将上述代码完整拷贝到命令窗口并按回车键,则可一次性执行该代码的全部功能)。
命令窗口常用来测试简单的代码,查询MA TLAB自带的函数,或者对正在运行的代码进行中断操作。
同时,在运行某些需要输入参数的代码时,通常也需要在命令窗口内进行输入。
关于命令窗口有一些常用的快捷键,如表1所示。
工作空间:工作空间用于保存代码执行时候的所有变量。
直到该变量被清除之前,它都(1)如何查看工作空间中的内容?(2)一直保存在工作空间中。
这里我们需要了解四个问题:如何保存工作空间中的变量?(3)如何清除工作空间中的变量?(4)如何将保存的变量再次读取到工作空间中?(1)如何查看工作空间的中的内容?我们可以通过界面操作直接点击工作空间中的变量进行查看。
当我们将上述代码的前四行(即截止到“c = 3;”)输入到命令窗口后,会发现如图5所示。
图5:MA TLAB工作空间此时左上方的工作空间窗口中出现了a、b、c三个变量,并且在后面直接显示了这些变量的赋值。
双击任意变量(如a),可以发现会出现一个新的窗口:变量编辑器(Variable Editor),在这个窗口内,我们可以更加详细地观察工作空间内的各个变量。
同时,我们也可以通过whos函数进行查询。
在命令窗口内输入如下代码:>> whos a命令窗口中随即出现关于变量a的信息,包括名称(Name),大小(Size),字节数(Bytes)和数据类型(Class),如图5所示。
(2)如何保存工作空间中的变量?保存工作空间中的变量通常使用save函数。
在前面的代码里,可以注意到第五行的代码为:>> save ws a b;输入此行代码并执行,则会将工作空间中相应的变量a、b保存到一个文件名为ws.mat 的文件中。
该文件存放的位置即MA TLAB的当前路径(参考图3)。
如果想一次性保存工作空间中所有的变量,则可以输入如下代码:>> save ws;(3)如何清除工作空间中的变量?清除工作空间中的变量通常使用clear函数。
在前面的代码里,可以注意到第六行的代码为:>> clear all;输入此行代码并执行,则会清除工作空间中的所有变量。
如果想要清除工作空间中特定的变量,则直接使用“clear + 变量名”的形式(一次性清除多个变量,用空格隔开)。
如清除工作空间中的变量a和b,则可以输入如下代码:>> clear a b;(4)如何将保存的变量再次读取到工作空间中?将保存的变量再次读取到工作空间中通常使用load函数。
在前面的代码里,可以注意到第七行的代码为:>> load ws;输入此行代码并执行,则会读取之前保存了变量a、b的文件ws.mat。
此时观察工作空间,则会发现重新出现变量a、b。
工作空间中相应的变量a、b保存到一个文件名为ws.mat的文件中。
该文件存放的位置即MA TLAB的当前路径(参考图3)。
如果想一次性保存工作空间中所有的变量,则可以输入如下代码:>> save ws;在实际工作中,有时候我们需要保存已经编写的代码,方便以后查阅和修改。
此时我们需要将已经编写完的代码保存到日志文件中。
这可以通过diary函数实现。
在前面的代码的第一行和最后一行,我们定义了需要保存的代码的起始点和终止点,并通过第一行定义了所要保存的文件名和文件格式(即“diary + 文件名”的形式)。
创建的日志文件被保存在当前路径中。
以上我们通过whos、save、clear、load和diary这五个函数了解了如何对工作空间中的变量进行常见的操作,并初步认识了工作空间。
工作空间可以帮助我们在编写代码的时候时刻掌握着代码的运行情况,是MATLAB非常重要的编程环境之一。
编辑器:编辑器是MATLAB最重要的编程环境之一。
通过编辑器,我们可以编写和调试MATLAB代码,并将它保存成扩展名为“.m”的文件,称之为M文件。
M文件通常在编辑器中编写,也可在记事本、写字板等文本编辑工具中编写,只需保存成M文件即可。
例如我们可以将这一节开头给出的代码拷贝到编辑器里,并且保存到文件名为“TestEditor.m”的M文件里,如图6所示。
图6:通过MA TLAB编辑器编写程序通过点击图6红色方框中的运行键,或者直接键入F5,则可以运行该M文件中的全部代码。
如果想运行部分代码,则首先选中需要运行的代码片段,再从右键弹出的快捷菜单中点击Evaluate Selection选择、或者直接键入F9执行(如图6所示)。
编辑器除了能够编写,运行代码以外,还能够方便地对代码进行逐行调试,我们将在后续章节中对这一功能进行详细地介绍。
这里我们先简单介绍一些编辑器中常见的快捷键,如表2所示。
表2 MATLAB编辑器窗口常用快捷键以上,我们分别从命令窗口,工作空间和编辑器这三方面介绍了MATLAB独特的编程环境,并且初步了解了如何使用MATLAB。
下面,我们将从编程语言的角度,进一步为大家介绍MA TLAB的特性。
2.1.2 MATLAB的编程语言相对于MA TLAB丰富多样的编程环境,MATLAB同样具有自己独特的编程语言,包括它所支持的数据类型,能够执行的运算,以及在编写MA TLAB代码的时候所能够运用的各种程序结构。
在本章和第三章中,我们将逐步从这些方面展开,带领大家了解MA TLAB的编程语言,并且逐步上手MATLAB的编程操作。