热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlabimread用法_拯救毕设|心理学实验matlab案例

有关于心理学实验的编程,现在比较主流的是使用eprime软件。但我对eprime确实印象不佳,首先eprime对mac的支持并不友好;其次
有关于心理学实验的编程,现在比较主流的是使用eprime软件。但我对eprime确实印象不佳,首先eprime对mac的支持并不友好;其次它的迁移性很差;最后就是eprime实现的功能也比较有限。当然,以上都只是个人观点。在本科毕设决定做实验后,我果断选择了matlab+psychtoolbox进行编程。中间经历了很多问题,在这里把遇到的问题和我的编程源代码分享出来,做抛转引玉之用,也希望和各路大神交流。

我的matlab基础一般,加上很久没有操作,这次基本是从零开始。由于学习周期较短。我在编程时用的是面向过程的方式,如果基础较好推荐面向对象的方式,修改起来较为方便。

首先安装matlab+psychtoolbox,安装方法自行百度。随后附上我的实验的示意图。

e29238c40ac271fef92bddf39f339281.png

1. 信息录入

ee2e513a4745563fdc6b5d89acb65f51.png

这里主要用的是inputdlg函数。具体用法见:inputdlg用法(学习中的小伙伴不要偷懒,百度勤快用起来5c4e9e3bb7f43861dd16274b827fc5bb.png)

随后将信息从info提取到SubInfo,并转换类型。

然后判断是否复合要求。

最后返回到y即可。

2. 指导语

806785556fe636b813b559ee61490135.png

这里用的函数的主要思路是将图片封装到mat类型文件中。

代码中默认将图片放在工作目录下的Ins文件夹中。

然后读取Ins文件夹内的文件。获得文件个数。NumIns减二的原因是读取文件个数的时候会默认多两个,具体情况可以根据自己的电脑进行测试,总之得到文件数量即可(其实是我记不太清了...7ce626540af6fa88d36adeaab68704c8.png)。然后批量将文件读取(先获得文件名,再用strcat拼接路径和文件名,最后用imread这个函数读取)保存到PicIns这个struct中,然后储存为Instructions.mat这个文件中。接下来,再主程序中引用即可。

3b36600eb44848fe88c09629488590f5.png

前三句用于将mat中的图片拿出来,然后通过wptr传递呈现。这个具体的实现方式很复杂。好像是先在缓存界面加载,然后再切换,以此呈现图片。总之复制这三句代码就可以成功呈现图片1了。

KbPressWait; :按任意键跳过

3. 其他一些准备工作

25f4c84367d36eaae56f1e39d50c00da.png

前三句初始化偏好。

第四局设置窗口的颜色。

五六七用于设置字体和大小。

最后三句我不太记得了75b3103249d398c17fef3c1c6b9ce69c.png,好像是隐藏鼠标指针,锁定键盘等,感兴趣自行百度c9112f27e1f7c382118cfe1db0b97862.png

6b97a5e79dd15fc8de98919155cd6b56.png

读取mat,为指导语做准备,这一步请在指导语前

4. 数据的处理方式

建议使用矩阵来处理数据,举例而言。

我的程序分实验一及实验二。实验一中有两个自变量,第一个自变量是两个刺激是否变化,变化和不变化两个level。第二个自变量是两个刺激之间的间隔时间,有三个level。

这样共有2x3=6组不同的条件。共有120个trial。我开始的想法是随机数,若随机到1则变化,随机到2则不变化。但这样的问题是无法平衡。例如120个trial中可能随机到57个变化,63个不变化。极端条件下120个变化0个不变化也有可能。在老师的提醒下,建议先建立一个design矩阵,建立后就可以很方便的录入数据了。

62591cc94a59bbdbe6a9993d8add1479.png

77036c83eb320287c1492f1ba1a5d732.png

生成的design。

这段就不定义函数了...因为不同的自变量对应不同level,我暂时不太会怎么写一个通用的函数。大家可以读懂我的代码然后自己实现,也可以直接做一些更改。

甚至再简单一点,你可以直接用excel做好再复制进.mat,然后保存3c79cc0ee5011d10861346e696ce9cff.png

5. 练习组

我的实验简单来说,是要在一个圆形范围内,随机位置呈现四个随机颜色的方块。方块颜色从七种颜色中随机。因此主要的两个问题是随机位置呈现,和随机方块颜色

a4e01d7039d36d4a43c1c42c7cd6901a.png

e64c182583574cf8b7f4242343609bcb.png

384dee45e994bd478d313eb9a5c01cc5.png

def964bb5165f014b1f53dd2514c9bdc.png

1ecc8b57237279b69846a71bf55529a4.png

dfb71dfed11ade94084e57bac7b196e1.png

2ee93ae860515e2f6b130d8b7da5bf81.png

7eedc8e34eadf24f738094deeab8985e.png

930ba26720aa636921b55582eee58942.png

453d1497c443ada41abf28659605339a.png

a54a02f3a019d7007c8fcfe5e941567d.png

8b699f33b7d1402130a670b28e579676.png

0397d924158ded90d18d4b670514ada9.png

e3d125e5d372f3eaf35ce0c0748947f9.png

(作者手稿:逻辑)

再说一下我是如何实现四个位置在圆上的。

首先get(0,'ScreenSize')得到自己的屏幕分辨率,我是1440x720。然后如下图(可能解释的不是非常清楚,辛苦大家领会!!)。总之是很简单的一个数学问题,这里因自己实验情况自己发挥就可以了。

26662e446372f25982bfaac1e67458e1.png

(作者手稿:位置解释)

6. 正式组

正式组基本和练习组一致,鸽了c8b0e2318d71b4f03a1966c7752a2217.png

7. 结束语

和指导语一致,鸽了c8b0e2318d71b4f03a1966c7752a2217.png

8. 数据收集

1167e6dd934bf46f296ef7226264ca30.png

参照之前练习组的代码,把最后的部分替换。还记得design吗,将反应时存在第五列。

然后if 如果按键正确,则保存1到第六列,否则保存0到第六列。9是matlab中F(还是J,不记得了)对应的数字,这个可以自行百度,每个按键有一个对应的数字。这里需要注意mac版和windows版对应按键不一致,请仔细查询。

9. 数据分析

050758f0125abe2960f6c27dcc09db91.png

6779f81ab673faeb49144b22229b85e0.png

(结果打开)

如此一来你就会得到一个表格,然后复制到spss就可以分析数据惹。可以先复制到excel按第一列重新排序成顺序,这样方便一些。

3a42c14eff2596027f810a0f51116010.gif

今天给大家分享的是我自己在做实验编程时的一点总结,大家看完我的程序加上自己的一些思考,基本可以编程大多数的实验了。非常希望这篇文章能帮到各位基本0基础却又想学习使用matlab的同学。此外,文章中代码的缩进没有正常显示,对八起辣02f4d428537a88769d8b21a7d01f61fa.png

PS:在写这篇文章的同时重新看了看自己的代码,发现了很多的漏洞和可以提升的地方,譬如这个程序确实不够简洁。附上源代码有些露怯了,还希望水平高的同学不要嘲笑我==

图文:江震宇

编辑:卢偲瑶

「往期精彩内容」

种草BNUX/UX教师招聘

微软UI课程/唐·诺曼来访

中美创客大赛/用户研究课程

欧洲实践行/2018美国实践行

050f489f25e46315a0c05ea40840720d.png




推荐阅读
  • 本文详细介绍了如何将After Effects中的动画相机数据导入到Vizrt系统中,提供了一种有效的解决方案,适用于需要在广播级图形制作中使用AE动画的专业人士。 ... [详细]
  • Flask中路由的基础定义与应用
    本文介绍了如何在Flask框架中通过装饰器为视图函数指定访问路径,并详细讲解了带参数路由及指定请求方法的实现方式。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文探讨了Web API 2中特性的路由机制,特别是如何利用它来构建RESTful风格的URI。文章不仅介绍了基本的特性路由使用方法,还详细说明了如何通过特性路由进行API版本控制、HTTP方法的指定、路由前缀的应用以及路由约束的设置。 ... [详细]
  • 解决 Pytest 运行时出现 FileNotFoundError 的方法
    在使用 Pytest 进行测试时,可能会遇到 FileNotFoundError 错误,提示无法找到指定的文件或目录。本文将探讨该错误的原因及解决方案。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 第七章 边沿检测技术的重要性与实践
    本文探讨了边沿检测技术在FPGA设计中的重要性及其实际应用案例。通过个人经历和具体实例,详细解析了边沿检测的原理、实现方法及其优化策略。 ... [详细]
  • 解决jQuery Spinner按钮垂直排列问题
    本文探讨了如何通过CSS调整jQuery Spinner组件中的上下按钮,实现它们的垂直堆叠布局。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • A1166 峰会区域安排问题(25分)PAT甲级 C++满分解析【图论】
    峰会是指国家元首或政府首脑之间的会议。合理安排峰会的休息区是一项复杂的工作,理想的情况是邀请的每位领导人都是彼此的直接朋友。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
author-avatar
Shirley韻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有