热门标签 | 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




推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • 在Windows系统上安装VMware Workstation 2022的详细步骤
    本文将详细介绍如何在Windows系统上安装VMware Workstation 2022。包括从官方网站下载软件、选择合适的版本以及安装过程中的关键步骤。此外,还将提供一些激活密钥供参考。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细探讨了在Android 8.0设备上使用ChinaCock的TCCBarcodeScanner进行扫码时出现的应用闪退问题,并提供了解决方案。通过调整配置文件,可以有效避免这一问题。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
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社区 版权所有