时隔多日,我又回来了......
这次给大家分享一下心理学实验程序的编写过程
就我所知,心理学实验的编写一般用eprime或者matlab的psychtoolbox(ppt等软件理论上也是能做的,但是我没见过有人用),当然据说万能的python的psychopy中文书也要上线了(但是我不会,希望有同学学会的话分享一下经验)。就eprime和matlab来说,我个人的观点是eprime相对matlab会更简单一些,但是matlab更全面一些,虽然我本科毕设的实验用了eprime。。。
回到正题,先上一张从百度搜来的图
这是一个简单的视觉心理学实验程序的流程,简单来说就是注视点200ms→目标刺激200ms→掩蔽刺激100ms→按键做出反应,然后重复做几十次或者更多,但是这其中目标刺激一般情况下是会产生变化的,也就是每次呈现的目标刺激都不一样,掩蔽刺激我们先假设一样(让实验更简单点,便于大家理解)。
接下来再介绍一下psychtoolbox的结构。
· 刺激矩阵的生成
· 刺激矩阵简单来讲就是把你需要的实验材料提前生成数字化的材料矩阵,如果实验用到图片就把图片对应数字矩阵生成一个图片矩阵(可能比较抽象,一会在实验中举例)
· 单次试验流程的编写
· 单次实验指的就是从上图的注视点到按键的一次循环
· 主实验程序的编写
· 主实验程序用来控制每次总共多少次循环,以及单次实验以外的流程控制,比如说开始时收集被试信息,以及指导语的呈现,因为这些不是每次循环都要呈现的所以
· 三个结构之间的关系
· 刺激矩阵生成供单次实验调用,单次实验接受主实验的某些关键值得输入又被主实验程序调用,同时单次实验又输出每次要记录的结果,有对函数互相调用不太了解的可以去看我之前的matlab函数的教程
理解这些结构以后,剩下的就是写出来就行啦~
为了方便理解我们先来写一个简单的刺激矩阵。
比如上文中的实验流程中我们假设实验共循环5次,一共5张图片材料,要保证每个图片都呈现一次。
那我们就先生成一个数字矩阵。
然后我们去点击workspace生成的picID,是这样的:
因为这个矩阵只有两列,我们只要再拼接一个trialID就可以了
trialID = [1;2;3;4;5]; %先生成实验序号
NumMatrix = [trialID picID]; %再把实验序号和picID拼接
最后生成的NumMatrix 是这个样子的:
最后,将刺激矩阵保存成.mat文件,以供调用。
save('NumMatrix.mat','NumMatrix');
当然这里因为图片较少,我们不需要写图片的刺激矩阵,直接在单次实验中调用就行,所以这个刺激矩阵很简单,如果图片很多又要生成图片的刺激矩阵我们需要用for循环来写入。
下面的代码是把图片矩阵和数字矩阵一起生成的代码:
因为一个复杂的刺激矩阵可能要写几百行甚至上千行代码,尤其是某些同学不喜欢写循环,所以这次就和大家分享一个简单的刺激矩阵生成,如果大家感兴趣,下次给大家分享单次实验和主实验程序的编写过程(这可能是psychtoolbox的终稿了所以~~~)。