Matlab实战|最后通牒游戏

Matlab实战|最后通牒游戏

img
img
Hello,
这里是行上行下,我是喵君姐姐~

机会是留给有准备的人,对于初次接触编程的人,难免会有抗拒心理。

但是现在心理学博士招生的要求当中,总是写着 “熟练使用Matlab/Python/R语言者优先”。

在数据以及分析过程公开化的趋势下,能够熟练使用编程已是大势所趋。

那今天我就详细讲解一下,如何从零基础开始matlab编程?

1 准备过程

本文将会简要介绍在Matlab中利用psychtoolbox工具箱进行编程的实例,主要是编程过程及一些需要注意的问题,旨在为喜欢用Matlab的同学提供一个大致的编程思路。

由于能力有限,只能为初学者们提供一个大致的思路,不能保证代码最优化,若有错误,还请多多包涵、指正~

所用的Matlab是2016a版,win7环境,工具箱版本为Psychotoolbox。

其中,Matlab软件包及安装过程,上次已详细讲解,点击蓝字可跳转。

其中,Psychotoolbox可在官网下载或在微信公众号行上行下后台回复”Psychotoolbox“也可下载。

2 编程过程

在正式编写实验程序前,强烈建议先用一张白纸简要地写出程序逻辑框架,即:被试信息部分,指导语部分,while循环及if/else判断部分(此处极为重要),以及最后的收尾、保存最终数据阶段。

本例所用实验范式为最后通牒游戏(Ultimatum Game)范式。

最后通牒游戏,被广泛地应用于社会认知及相关领域的心理学实验中,共有两名玩家,分为提议者和接受者。

大致流程为:提议者对待分配资金进行分配,分配方案则交由接受者来决定是否按此分配。若接受者接受此分配方案,则按该方案进行分配;若接受者拒绝此分配方案,则双方均无收益。本实验被试作为接受者。

首先,一个实验,最开始就是要收集被试数据,如下所示,被试信息文件会保存至当前工作目录下。
img
之后是指导语,如下所示,e:\Gui.png为指导语图片的路径(此处及之后需要展示中文字符串的地方,皆使用图片来展示)。

等待一秒后(防止按键过快),按任意键执行下一句(由于本实验不需要记录反应时,所以此处使用KbWait即可,否则建议换成精度更高的KbCheck)。

多个指导语,可以设置多个图片,按图示第三句开始重复即可。
img
下图为练习实验所用变量,正式实验对其再次赋值即可。

这里应对实验中的试次数、反应所需按键、其它循环所需变量进行赋值。t为试次数,g为总金额,b为随机生成矩阵的前一半(用于随机呈现刺激)。
img
下图为while循环,逻辑较为简单。

将注视点程序写在while判断条件下(可通过调用.m文件来简化代码,即写成脚本再调用),为了方便起见,此处将所有的条件(如:A提议者分配方案5:5,B提议者分配方案3:7等)做成图片再进行显示,右图的if只显示了A提议者的5:5方案时拒绝情况,接受写在else后,后三句是将此情况的数据保存至相应文件(每个提议者的每种方案的每种接受/拒绝情况都要写)。
img
下图为决策部分,将决策结果保存至相应文件中。此外,为了检测按键,应加入如下语句:[~,keyCode]=KbPressWait(-3);pressCode=find(keyCode);-3代表检测全键盘。
img
while循环的判断条件(t=t+1)写在 if c==0 …….end后。

下图为while循环结束后,结束实验前的准备,包括:写入游戏最终金额等(需要什么写什么)。

此时,一个被试的数据就保存好了,第二个被试也可以用相同的程序,文件中会另起一行重新记录。
img
为了方便起见,将练习实验的txt文件中的数据保存至Execl文件的sheet1中;将正式实验的txt文件中的数据保存至Execl文件的sheet2中。

练习实验的结果保存处使用textread命令,这里仅仅举个例子,textscan命令更简便。

正式实验的结果保存处使用textscan命令,以便进行大量数据的读取。
img

3 叨叨几句

img
今天,详细介绍了如何从零开始进行Matlab编程。以简单的最后通牒游戏为例,希望能够做到一个抛砖引玉的作用,让你开启编程之旅。

万事开头难,可能你对于代码讲解也不是太懂。但是能够尝试一下,跑一下程序,也算是一个良好的开端。

之后,可以多看看Matlab相关书籍及教程,慢慢开始学习,总有一天你也可以的!

此外,我也整理了一份最后通牒游戏全部代码以及相应的详细教程等。文章首发于微信公众号行上行下,公众号后台回复关键词“最后通牒游戏”,即可获得所述的最后通牒游戏范式代码以及相应教程啦!

感谢你耐心地读到现在,初次编程,还是有很多不足之处,还请多多批评、指正~

分享完毕,希望有所帮助。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

壹脑云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值