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

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

举例:一般我们选择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

o-Back-N协议是一种数据传输协议,其主要功能是将数据分割成多个数据包进行传输,以提高数据传输的可靠性和效率。 在进行功能测试时,需要对o-Back-N协议进行以下测试: 1. 数据传输测试:测试数据在使用o-Back-N协议传输时的可靠性和效率,包括数据传输速度、数据传输的完整性、数据传输的正确性等。 2. 连接测试:测试o-Back-N协议在建立连接、维护连接和关闭连接时的可靠性和效率,包括连接的建立速度、连接的稳定性、连接的可重用性等。 3. 多线程测试:测试o-Back-N协议在多线程环境下的可靠性和效率,包括多线程并发传输时的数据传输速度、数据传输的完整性和正确性等。 4. 错误处理测试:测试o-Back-N协议在出现错误时的处理能力,包括错误提示、错误恢复等。 测试结果分析如下: 1. 数据传输测试结果表明,o-Back-N协议具有较高的数据传输速度和数据传输的完整性和正确性,可以满足大部分数据传输需求。 2. 连接测试结果表明,o-Back-N协议在连接的建立速度、连接的稳定性和连接的可重用性方面表现较好,可以满足大部分连接需求。 3. 多线程测试结果表明,o-Back-N协议在多线程并发传输时的数据传输速度和数据传输的完整性和正确性较好,可以满足大部分多线程传输需求。 4. 错误处理测试结果表明,o-Back-N协议在出现错误时的处理能力较好,可以及时提示错误并进行错误恢复,保证数据传输的可靠性和正确性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MaolinYe(叶茂林)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值