【脑与认知科学】【n-back游戏】

news2024/11/23 17:19:29

请参考课堂内容,设计一种测试工作记忆的实验方法,并选择三位同学作为被试测试工作记忆。请画出实验流程图,叙述实验测试目标,并分析实验结果。

举例:一般我们选择n_back来测试对数字或字母的记忆,选择色块实验来测试对颜色的记忆。实验中的自变量与因变量的变化,比如数字/字母/色块的数量n就是自变量。成功率就是因变量,而屏幕显示的时间可以在一定范围内随机。并将实验结果进行分析,譬如因变量随自变量的变化,呈现什么样的趋势。屏幕显示时间和因变量有什么关系等。

 

我们选择复刻n-back游戏来测试工作记忆,游戏的流程是这样的:玩家会看到一个灰色方块组成的九宫格,其中一个绿色方块会在九宫格中闪烁,玩家需要把每次绿色方块闪烁的位置记住,判断前n次绿色方块出现的位置,例如当n=1时,玩家需要判断上一次绿色方块在九宫格中出现的位置;当n=2时,玩家需要判断上两次绿色方块出现的位置,依次类推……

实验流程图如图1所示,我们首先给出提示文字,告知测试者实验测试的流程与步骤,然后给出每个方块的位置,这样后续判断绿色方块的位置时可以通过按下键盘上的数字键选择方块的位置,然后开始闪烁方块,要求测试者判断前n次绿色方块出现的位置,最后给出判断结果,其中n的值为3、4、5中的随机值。

图1

我们全程使用python的psychopy库完成实验的设计。

import random
import pandas
from psychopy import visual, event, core


# 展示提示文字,并根据参数实现不同的文字展示
def showCue(text, x=0, y=0, wait=True, title=False, flip=True):
    if title:
        cue = visual.TextStim(win, text=text, pos=(x, y), color='black', height=50, bold=True)
    else:
        cue = visual.TextStim(win, text=text, pos=(x, y), color='black', height=20, bold=True)
    cue.draw()
    if flip:
        win.flip()
    if wait:
        event.waitKeys()


# 构建绿色方块的随机位置
places = []  # 创建空列表
while len(places) < 30:
    num = random.randint(0, 8)  # 生成一个0到8的随机整数
    if not places or num != places[-1]:  # 如果列表为空或者新生成的数与前一个数不相同
        places.append(num)  # 将新生成的数添加到列表中
size = 145   # 方块大小
positions = [
    (-150, 150), (0, 150), (150, 150),
    (-150, 0), (0, 0), (150, 0),
    (-150, -150), (0, -150), (150, -150)
]
win = visual.Window(size=(1000, 618), color='white', units='pix')
showCue('工作记忆测试实验', wait=False, title=True, y=150, flip=False)
showCue('判断前n次绿色方块出现的位置\n按下对应位置的数字,共测试5次\n按任意键查看方块位置对应的数字')
for i in range(9):
    cube = visual.Rect(win, width=size, height=size, pos=positions[i], fillColor='#afafaf')
    cube.draw()
    number = visual.TextStim(win, text=str(i + 1), pos=positions[i], height=size / 2)
    number.draw()
showCue('数字代表方块的位置,按任意键开始测试', y=250)
data = {'结果': [], '反应时间': [], 'n': []}
for index in range(30):
    for i in range(9):
        if i == places[index]:
            color = 'green'
        else:
            color = '#afafaf'
        cube = visual.Rect(win, width=size, height=size, pos=positions[i], fillColor=color)
        cube.draw()
    core.wait(1)  # 展示一秒
    if (index + 1) % 6 == 0:
        n = random.randint(3, 5)
        showCue('前 ' + str(n) + ' 次绿色方块出现的位置是', y=250, wait=False)
        Time = core.Clock()
        key = event.waitKeys(keyList=[str(i) for i in range(10)])
        time = Time.getTime()
        if key[0] == str(places[index - n]+1):
            result = '正确'
        else:
            result = '错误'
        showCue(result + '!反应时间为' + str(time) + '秒!\n' + '按任意键继续')
        data['结果'].append(result)
        data['反应时间'].append(time)
        data['n'].append(n)
    win.flip()
showCue('实验结束,按任意键退出')
win.close()
# 将数据写入excel
excel = 'personDData.xlsx'
df = pandas.DataFrame(data)
try:
    DF = pandas.read_excel(excel)  # 该execl文件已经存在则追加数据
    DF = pandas.concat([DF, df], ignore_index=True)
    DF.to_excel(excel, index=False)
except FileNotFoundError:  # 没有该excel文件将创建一个新的
    df.to_excel(excel, index=False)

我们首先写一个函数,用于展示提示文字,被试者可以按任意键结束提示,如图2所示,与之前的实验不同的是,我们这次的文字展示函数增加了许多参数,用来实现在不同位置展示文字,并以不同的样式展示文字,而且可以决定是否刷新页面或等待按键结束。

图2

用随机数来构建绿色方块要出现的位置序列,并保证相邻的出现位置不重复,规定方块的大小并设置好九宫格的位置,如图3所示。

图3

创建展示窗口,并调用先前写好的文字展示函数显示实验标题和实验操作提示,并展示九宫格方块位置对应的数字,如图4所示。

图4

然后开始让九宫格中的绿色方块闪烁起来,每次停留一秒,如图5所示。

图5

随机取个n,让玩家回忆前n次绿色方块出现的位置,给出结果反馈,并将判断结果以及玩家反应时间记录下来,如图6所示。

图6

测试结束给出结束提示,按任意键可以退出,然后关闭窗口,将记录的数据写入excel表格,如图7所示。

图7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1223608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列4

文章目录 原型网络进行分类的基本流程一、原始代码---计算欧氏距离&#xff0c;设计原型网络&#xff08;计算原型开始训练&#xff09;二、每一行代码的详细解释总结 原型网络进行分类的基本流程 利用原型网络进行分类&#xff0c;基本流程如下&#xff1a; 1.对于每一个样本…

csapp深入理解计算机系统 bomb lab(1)phase_1

实验目的&#xff1a;进一步了解机器级代码&#xff0c;提高汇编语言、调试器和逆向工程等方面原理与技能的掌握。 实验环境&#xff1a;C、linux 实验获取&#xff1a;进入csapp官网&#xff0c;点击linux/x86-64 binary bomb下载实验压缩包。 实验说明&#xff1a;一共有6…

剑指JUC原理-19.线程安全集合

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

TensorFlow:GPU的使用

**引言** TensorFlow 是一个由 Google 开发的开源机器学习框架&#xff0c;它提供了丰富的工具和库&#xff0c;支持开发者构建和训练各种深度学习模型。而 GPU 作为一种高性能并行计算设备&#xff0c;能够显著提升训练深度学习模型的速度&#xff0c;从而加快模型迭代和优化…

logistic回归后快速绘制亚组森林图!SCI发表级高清图片分分钟生成!

本周为大家重点介绍一下风暴统计平台的最新板块——亚组森林图&#xff01; 现在亚组分析好像越来越流行&#xff0c;无论是观察性研究还是RCT研究&#xff0c;亚组分析一般配备森林图。 比如这张图&#xff1a; 还有这个&#xff1a; 森林图不仅是画图的画法&#xff0c;背后还…

[C国演义] 哈希的使用和开闭散列的模拟实现

哈希的使用和开闭散列的模拟实现 1. 使用1.1 unordered_map的接口1.2 unordered_set的接口 2. 哈希底层2.1 概念2.2 解决哈希冲突 3. 实现3.1 开放寻址法3.2 拉链法 1. 使用 1.1 unordered_map的接口 构造 void test1() {// 空的unordered_map对象unordered_map<int, in…

智能配电系统解决方案

智能配电系统解决方案是一种集成了先进技术和智能化功能的配电系统&#xff0c;它能够提高电力系统的效率、可靠性和安全性。力安科技智能配电系统解决方案依托电易云-智慧电力物联网&#xff0c;具体实施的方案如下&#xff1a; 智能化设备和传感器&#xff1a;采用智能化的开…

安全框架springSecurity+Jwt+Vue-1(vue环境搭建、动态路由、动态标签页)

一、安装vue环境&#xff0c;并新建Vue项目 ①&#xff1a;安装node.js 官网(https://nodejs.org/zh-cn/) 2.安装完成之后检查下版本信息&#xff1a; ②&#xff1a;创建vue项目 1.接下来&#xff0c;我们安装vue的环境 # 安装淘宝npm npm install -g cnpm --registryhttps:/…

招聘小程序源码 人才招聘网源码

招聘小程序源码 人才招聘网源码 求职招聘小程序源码系统是一种基于微信小程序的招聘平台&#xff0c;它可以帮助企业和求职者快速、方便地进行招聘和求职操作。 该系统通常包括以下功能模块&#xff1a; 用户注册和登录&#xff1a;用户可以通过微信小程序注册和登录&#…

H5ke11--1登录界面一直保存--用本地localStorage存储

目录 代码详解 localStage优点 :一直保存着 注意事项: storage属性们 代码详解 ke8学校陈老师H5-CSDN博客文章浏览阅读76次。实现H5中新增的三个元素&#xff1a;forEach的使用方法。https://blog.csdn.net/m0_72735063/article/details/134019012即此之后 当然可以分为按…

Linux inotify 文件监控

Linux 内核 2.6.13 以后&#xff0c;引入了 inotify 文件系统监控功能&#xff0c;通过 inotify 可以对敏感目录设置事件监听。这样的功能被也被包装成了一个文件监控神器 inotify-tools。 使用 inotify 进行文件监控的过程&#xff1a; 创建 inotify 实例&#xff0c;获取 i…

【从入门到起飞】JavaSE—IO流(1)字节输入流字符输出流

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;概述&#x1f33a;作用&#x1f33a;分类&#x1f33…

如何去开发一个springboot starter

如何去开发一个springboot starter 我们在平时用 Java 开发的时候&#xff0c;在 pom.xml 文件中引入一个依赖就可以很方便的使用了&#xff0c;但是你们知道这是如何实现的吗。 现在我们就来解决这一个问题&#xff01; 创建 SpringBoot 项目 首先我们要做的就是把你想要给别…

Wireshark TS | 应用传输缓慢问题

问题背景 沿用之前文章的开头说明&#xff0c;应用传输慢是一种比较常见的问题&#xff0c;慢在哪&#xff0c;为什么慢&#xff0c;有时候光从网络数据包分析方面很难回答的一清二楚&#xff0c;毕竟不同的技术方向专业性太强&#xff0c;全栈大佬只能仰望&#xff0c;而我们…

【Spring篇】使用注解进行开发

&#x1f38a;专栏【Spring】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出小吉的问题 文章目录 &#x1f33a;原代码&#xff08;无注解&#xff09;&#x1f384;加上注解⭐两个注…

20231117在ubuntu20.04下使用ZIP命令压缩文件夹

20231117在ubuntu20.04下使用ZIP命令压缩文件夹 2023/11/17 17:01 百度搜索&#xff1a;Ubuntu zip 压缩 https://blog.51cto.com/u_64214/7641253 Ubuntu压缩文件夹zip命令 原创 chenglei1208 2023-09-28 17:21:58博主文章分类&#xff1a;LINUX 小工具 文章标签命令行压缩包U…

打不开github网页解决方法

问题&#xff1a; 1、composer更新包总是失败 2、github打不开&#xff0c;访问不了 解决方法&#xff1a;下载一个Watt Toolkit工具&#xff0c;勾选上&#xff0c;一键加速就可以打开了。 下载步骤&#xff1a; 1、打开网址&#xff1a; Watt Toolkit 2、点击【下载wind…

Python (十一) 迭代器与生成器

迭代器 迭代器是访问集合元素的一种方式&#xff0c;可以记住遍历的位置的对象 迭代器有两个基本的方法&#xff1a;iter() 和 next() 字符串&#xff0c;列表或元组对象都可用于创建迭代器 字符串迭代 str1 Python str_iter iter(str1) print(next(str_iter)) print(next(st…

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列2

文章目录 一、原始代码二、每一行代码的详细解释 一、原始代码 labels_trainData ,labels_testData load_data() wide labels_trainData[0][0].shape[0] length labels_trainData[0][0].shape[1] for label in labels_trainData.keys():labels_trainData[label] np.reshap…

FastJsonAPI

maven项目 pom.xml <dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.26</version></dependency><dependency><groupId>junit</groupId>&l…