优职学长官网

报名 搜索 成绩查询考研真题考研大纲 免费资料

你当前的位置:首页 > 新闻资讯 > 心理学

Matlab基础知识和工作环境

  • 时间:2019-01-29 17:52:04
  • 来源:
  • 点击数:0

Matlab基础知识和工作环境

这个章节要学习的内容包括:

Q1:为什么要学习Matlab?

Q2:Matlab是什么?它有什么特点?

Q3:Matlab在心理学研究中有哪些应用?

Q4:如何开展本期Matlab课程的学习?

 

Q1:为什么要学习Matlab?

作为心理学专业的学生,为什么要学习Matlab编程?不学行不行呢?

我们先来看心理学专业的学生的培养目标,培养方案是这样写的:

“……,掌握心理学基础知识、基本理论及应用技能,具备心理学基本科研能力 ,……”

而掌握Matlab是提升心理学的应用技能和科研能力的可操作化途径之一。


 

没有车或者不会开车,我难道就不能出行了吗?实在不行,我还可以叫滴滴呢?

这么说是有道理的,因为,做这样的类比,你可以通过认识的学过计算机编程的朋友帮你忙,你可以到网上(万能的淘宝+万能的朋友圈)付费请人帮忙,这跟用滴滴打车软件叫车是很类似的。

听起来挺有道理的,可惜这里会出现至少三个问题:

(1)你喊人帮忙,是要欠人情或者付费的,有时候代价还挺大;

(2)因为你对编程语言不够了解,你和工程师之间的交流有可能会有问题;

(3)没办法可持续地迭代,对结果进行精细控制,技术掌握在别人手里容易受制于人。

 

针对问题(1)的实例:我之前也请人帮我写程序,一开口工程师就要一天800RMB(现在想想还真不贵),我一想这个活如果干10天他就要拿走8000RMB,我就果断放弃了。这钱赚得也太容易了,我还不如自己买书学呢。有这8000RMB我可以把西单图书大厦Matlab有关的书全买下来 O(∩_∩)O~

针对问题(2)的实例:我研究生期间在一个做双语学习的研究小组干活,我们几个心理学背景的学生负责提构想idea,准备做一个人工语言学习的应用软件。我们找了专门的工程师帮我们实现想法,结果,我们提交的方案对方直接一句“这个做不了”就给我们打回来了,那叫一个尴尬啊。但是,我们又没有什么办法,因为我们这帮心理学出身的不懂代码,也不知道是工程师水平问题还是我们提出的方案确实太难了。不像腾讯的马化腾,要是手底下有员工说“这个做不了”,他马上可以直接怼回去“你说什么?!”他是程序猿出身,有这个底气。

针对问题(3)的实例:我之前有帮助过一个同事P老师的实验室写过一次代码,7天时间,搞定了制作带noise的刺激材料的程序。这个活本来是给另外一个教育技术的老师帮忙的,半年给了2万的辛苦费,实验材料一直没有办法用(要达到发表水平,就需要不断地优化迭代,很多细节都需要反复修改,不断优化)。这个程序最后还差一点,可是人家教育技术的老师很忙,就只好搁置了。这就是典型的受制于人的局面,P老师最后实在是没办法了,请我出马帮忙,七天时间搞定,最后学生顺利毕业,文章发表,皆大欢喜。

我们之所以能够一键叫滴滴,是因为整个社会的资源配置因为这款手机应用的出现得到了优化。如果我们所在的实验室,不管是国内的还是国外的,都能够实现一个实验室一个技术工程师提供支持的局面,或者你有一个程序员老公,自然是十分美好的。可实际的情况并非如此,我们经常是一个人空投到了某个陌生的环境(比如,留学去欧美国家),那个时候我们只能孤军奋战,自己动手才能丰衣足食。

所以,针对这个问题“心理学背景的学生为什么要学习Matlab编程?”答案总结如下:

Matlab代表了一种先进的生产力工具,学习了Matlab编程,你就可以避免低效的重复劳动,把更多的时间和精力放在更有价值的事情上(比如,专注于构想),能够跟程序员进行良好的沟通,甚至自己动手完成持续的迭代和优化工作,提升工作的效率和质量。

过去那个时代,大家都不会Matlab,包括心理学界一些大牛们。可是,他们确实意识了先进生产力工具的重要性,并且以一种很特殊的形式在心理学圈子中发出了他们的号召,比如我们的舒华老师。



 

中国心理学界顶级专家学者的视野决定了他们的话非常具有前瞻性

“总有一天,有一个会Matlab的小黑人,他会通过战胜你,拿走原本属于你的一切... ...”

做人一定要站得高看得远,对未来要有预见性,要有危机感。

 

 

Q2:Matlab是什么?它有什么特点?

Part1. Matlab是什么?


 

我专门制作了这么个表格,你们可以从这个表格中获悉这样的信息:

(1)它是一款数学软件;(2)它有一个很酷的名字,叫做“矩阵实验室”;(3)它是美国的MathWorks公司出品的;(4)它可以用来进行数值计算,进行算法开发,建模,编写可视化的应用,分析数据和可视化... ...

从做研究的角度,Matlab是万能的,除了生孩子,它什么都可以做 O(∩_∩)O~

 

 

Part2. Matlab的工作环境


界面简洁,操作简单

 

故宫的格局很大气,中间象征至高无上的权力,左边藏着无尽的财宝,右边住的是各色的倾国倾城。

故宫,是欲望发挥到极致的发明。

Matlab,是理性和智慧发挥到极致的发明。

Matlab的开发者们肯定来过故宫或者至少从哪里继承了类似的思想,他们知道把命令窗口(Command Window)放在正中间。说明这个窗口是最核心的窗口。理论上Matlab是可以裸奔的,不要其他,只要权力(命令窗口),因为有了权力,什么都会有的。

Matlab的左边窗口是资源管理器(CurrentFolder Window),通过它我们可以看见我们的各种宝贝(文件夹和文件)。

Matlab的右边窗口是工作空间(Wordspace Window)和历史记录(CommandHistory Window),一旦在命令窗口召唤了大臣或者妃子(变量),你就可以在工作空间看到这些变量的情况,而且这些命令也会被历史记录窗口记录在案,必要的时候可以通过点击重复这些命令。


正中间上方位置是当前工作路径,我喜欢把它叫做“当前工作路径”,翻译成英文 Current Working Path。

 

一般在打开Matlab之前,会把工作目录的文件夹从资源管理器路径那个位置 Ctrl + C 拷贝;然后等Matlab打开之后,在Matlab当前工作路径编辑窗口位置 Ctrl + V 粘贴。

 

习惯很重要 ( ⊙ o ⊙ )啊!习惯很重要!!习惯很重要!!!

养成这个习惯可以避免很多不必要的麻烦!很多人起步阶段程序频频出错,进而大大影响了学习Matlab的积极性,就是因为没有养成这个习惯,虽然是一个很简单的操作。

 

这是为什么?难道Matlab不是在命令窗口中输入命令吗?怎么一个当前工作路径的拷贝习惯会导致程序频频出错呢?那是因为Matlab 虽然执行命令是在命令窗口,但是,通常编辑命令的脚本却是在一个编辑器(Editor)里边(后边会配合图详细介绍,这会先按下不表)。

 

比如,你想执行清屏的操作(把命令窗口显示的内容清空掉),你可以在命令窗口敲入clc,像这样:

>> clc 
然后敲回车,命令窗口中显示的内容就被清空掉了;

你可以在命令窗口中敲入clear,像这样:
>> clear
敲回车,你的工作空间中的各种变量就不见了。

 

我在Matlab里边真实地操作一个例子,这时候在命令窗口会显示:

>> myMatrix = [1 2 3; 4 5 6]

myMatrix =

1 2 3
4 5 6

同时在工作空间窗口会显示:
Name Value Min Max
myMatrix [1 2 3; 4 5 6] 1 6

然后我们可以在命令窗口再敲入:
>> clc; clear;
敲回车执行之后,命令窗口和工作空间窗口里边的内容就被清空了。瞬间,整个世界都清净了

 

在命令窗口中输入一个,两个,几个命令是OK的,可命令多了你还这么输看起来就跟那些需要治疗药不能停的神经病没啥区别 了。Matlab专门设了一个编辑器(Editor)用来编写各种脚本(Script)。怎么打开编辑器窗口?你可以点击Matlab界面的左上角那个 New Script(新建脚本) 按钮就会弹出编辑器窗口(如果你猜到打开编辑器的快捷键是 Ctrl + N,那我真心太佩服你了...Genius! O(∩_∩)O~)。

 

 

Matlab的脚本文件的后缀是 .m,Matlab的函数文件的后缀也是 .m。这怎么分得清楚呢?
分得清楚的!
函数文件的开头要加个 function 用来声明这是一个函数。还记得那个生成魔方矩阵的magic函数不?你想不想看看它里边长什么样?你可以在命令窗口中输入 edit magic,你就可以在编辑器中看到magic函数里边的内容了。

而脚本文件是不需要声明的,一般脚本文件的开头我喜欢以 clc;clear; 开头,这样每次执行脚本文件的时候,相当于重新开始,上一次执行的结果就不会影响到这次脚本运行的结果。

讲到这里,Matlab的界面介绍就讲得差不多了。表面上的 左边资源,中间命令,右边工作空间和历史;隐藏在这格局背后的是脚本或者函数 .m文件,在命令窗口中随时可以调用这些函数或者脚本文件在Matlab。


点击新建脚本之后打开脚本编辑器。

比如,你可以写一个ShowMeTheMoney.m脚本,在一个循环里实现从天上往下掉钱的功能,你可以在命令窗口中执行ShowMeTheMoney,然后你会发现天上开始往下掉钱,记得要给那个循环设置个上限哦,要不然小心被钱给埋了 O(∩_∩)O~

话说是不是还没有交待为什么不养成复制粘贴“当前工作路径”就会出问题?

那是因为,如果你打开Matlab,它默认的位置是 “C:\Users\Administrator\Documents\MATLAB” 而你运行程序的位置有可能在另外一个位置(比如,我们随便设一个路径 “D:\MatlabLearningCourse\SpeechRecognition”)。这个时候,你如果点击左上角的那个新建脚本的按钮(New Script),当你敲入你想要执行的命令语句的时候,你是需要保存的。如果你不把当前的目录改过来的话,你在编辑窗口点击保存(Save)按钮的时候,Matlab会以为你想保存在 “C:\Users\Administrator\Documents\MATLAB”。文件只有一个的时候,这种情况很容易纠正过来的,但是,如果你开始写项目,文件一多的时候,把某个.m文件存在 “C:\Users\Administrator\Documents\MATLAB”,就会因为在当前的路径中找不到相应的.m文件无法调用而出现报错。

当然,这个只是可能发生的错误之一,还可能会有其他潜在的错误(我比较确信还有可能导致其他的错误,就是有点不太记得具体的机制了,I'm sorry!!)。

 

Part3. Matlab的基础知识

3.1 Matlab是一种交互环境

使用方便+ 所见即所得

Matlab是开放的,Matlab的.m文件你是可以用编辑窗口打开看的,就像前边说的,你想要打开magic.m这个文件,你在命令窗口中输入edit magic它就会给你打开,你就可以看到里边的代码。

Part2. Matlab的思想源起?

 

大学老师,大爱无边


Matlab的创始人Cleve Moler教授在教本科生计算机编程C和Fortran的时候发现本科生都挺不愿意去写底层的代码,他就只好自己把底层的代码写好,写成函数让学生们直接调用(西方价值观居然有这样大爱无边温柔体贴的教师?他还专门提供了Help命令,通过Help magic你可以读取有关magic函数的说明)。这种做法后来被借鉴到Matlab的开发中,Matlab开发的时候找的世界上最聪明的那波学数学和学工程的牛人,这就意味着,每个专属于你所在的领域的工具包无疑就是一部武功秘籍!读懂里边的代码,你就可以自己改里边的代码,甚至必要的时候,你可以自己写一个新的工具包。想象一下,你用一天写一个程序,师大所有的人都在用,因为用了你的程序,所有的人都节省了1个小时,那你不就是先进生产力的代表了吗?如果把每个人都理解成速度的话,你不就成了加速度了吗?

很多人都要通过小说游戏这种做白日梦,这种精神鸦片的方式,YY自己有一天不小心掉下悬崖捡到武功秘籍,练习之后成为武林高手笑傲江湖。在这里我想表达的意思是,其实武功秘籍就在那里,你只要愿意打开它,你只要愿意去学习并掌握它,你就有可能站在巨人的肩膀上(Stand on the shoulders of giants)成为传奇,你就有可能在历史上留下一笔(History prefer legends)。

 

我们可以对比下两种编程界面,大家就会有一个更直观的认识。



 

大家觉得哪种画面简洁呢?

因为Matlab是建立在MathWorks公司创始人Cleve Moler的大爱无边的思想的基础上的,所以,它追求的是大而全,找这个星球最聪明的数学和工程方面的专家,把底层的代码写好,方便使用Matlab工具的用户直接愉快地应用。所以,每一个使用Matlab的人,不是一个人在战斗,他或者她从使用Matlab开始就是站在巨人的肩膀上。




 

牛顿如果生活在今天,一定是位Matlab高手

 

 

 

 

 

 

3.2 Matlab是数据可视化工具

画图方便+ 功能强大

Matlab可以做出非常漂亮的图表。先放几个图:


 

通过MEX 文件,可以方便地调用C 语言和Fortran 语言编写的函数或程序,完成MATLAB 与它们的混合编程,充分利用已有的C 语言和Fortran 语言资源。




通过对矩阵的操作我们可以轻松实现画图这一功能。


通过matlab也可以实现数据的导入,并对数据进行处理。


如何生成刺激矩阵


 

3.3 Matlab以矩阵为操作对象

矩阵操作灵活便捷

单击Help,选择Using theDesktop,就可以查看很多帮助文档。这个功能对于英语不好的初学者可能使用起来有些困难,但是当你对Matlab熟悉以后,就会很简单啦。

 

3.4 Matlab的帮助文档写得很清楚

对于初学者,其实更简单的方法是通过一些Demo来学习Matlab。你可以尝试在Matlab命令窗口中输入Demo,这时候就会弹出一个窗口。在这里面可以看到有很多视频以及程序演示,里面的程序和演示会让初学者加深对Matlab的熟悉,并展示Matlab强大的功能。



Matlab的创始人Cleve Moler教授十分重视Matlab“帮助”文件的制作。不同的版本帮助文件的位置是不一样的(上边的是Matlab 2010b 版本的帮助文件的开启按钮位置;下边的是Matlab 2013b 版本的帮助文件的开启按钮位置)。

推荐课程