• PsychoPy Coder实现心理学小实验


    纯python代码实现的,代码并不复杂,主要就是熟悉一个psychopy这个库的函数使用,前面都是psychopy的库函数使用,后面就是将收集到的数据保存为excel表格。

    在屏幕中左右各显示一张图像,并显示提示词:要求用户选择一张图像,并根据选择点击键盘按键N或M(此处可以设置为其它键盘按键)。等待用户点击键盘,输出根据键盘判定点击的图像是哪一张,并输出从显示图像到用户点击键盘的时间。请注意图像的选择,避免在显示中图像的压缩变形。

    效果如下

    使用visual.Window创建一个可视化窗口,用visual.ImageStim显示两张图片,一张放置在窗口左边,另一张放置在窗口右边,用visual.TextStim在窗口中间显示提示文字,如下图所示,为了避免图像显示的压缩变形,在显示的时候规定好显示的size。

            然后在显示图片之后开始记录时间,同时监听键盘输入,当键盘输入N或者M时结束记录时间并关闭窗口,输出用户选择的图像和从显示图像到用户敲击键盘的时间,如下图所示。

    并将数据保存为excel表格,每次测试都将新的数据追加上去,测试30次,根据用户选择的图像绘制的柱状图如下图所示,可见二者大致相同。

    代码如下 

    1. from psychopy import visual, event, core
    2. import pandas as pd
    3. # 初始化窗口和图像
    4. win = visual.Window(size=(1000, 618), monitor='testMonitor', units='pix')
    5. left_image = visual.ImageStim(win, image="C++.jfif", pos=(-300, 0), size=(400, 400))
    6. right_image = visual.ImageStim(win, image="Java.jfif", pos=(300, 0), size=(400, 400))
    7. prompt_text = visual.TextStim(win, text="请选择一张图像\n按N键选择左图像\n按M键选择右图像", pos=(0, 0))
    8. # 绘制图像和提示词
    9. left_image.draw()
    10. right_image.draw()
    11. prompt_text.draw()
    12. win.flip()
    13. # 等待用户按键
    14. response = None
    15. rt_clock = core.Clock()
    16. while True:
    17. keys = event.getKeys()
    18. if 'n' in keys:
    19. response = "左图像"
    20. break
    21. elif 'm' in keys:
    22. response = "右图像"
    23. break
    24. # 输出结果
    25. rt = rt_clock.getTime()
    26. print("用户选择了:", response)
    27. print("反应时间:", rt)
    28. # 保存数据到表格
    29. data = {'选择': [response], '反应时间': [rt]}
    30. df = pd.DataFrame(data)
    31. try:
    32. existing_df = pd.read_excel('data.xlsx') # 读取已存在的表格数据
    33. newDF = pd.concat([df, existing_df], ignore_index=True)
    34. newDF.to_excel('data.xlsx', index=False)
    35. except FileNotFoundError:
    36. df.to_excel('data.xlsx', index=False)
    37. # 关闭窗口
    38. win.close()

    根据记录的时间绘制排列图如下图所示,其中横坐标为时间区间,纵坐标为落在区间中的数目,可知大多数的反应时间是在4秒到7秒之间。

  • 相关阅读:
    Flink中jobmanager、taskmanager、slot、task、subtask、Parallelism的概念
    Li YK: DOS计算案例
    SQL 注入 - http头注入之referer注入
    分类算法(Classification Algorithm)需求记录
    Angular-04:指令
    C++中的类型转换
    SpringBoot【开发实用篇】---- 整合第三方技术(缓存)
    Spring-IOC容器底层原理
    企业电子期刊怎么做,用这个平台就对啦!
    QCustomPlot 坐标轴间隔显示刻度标签
  • 原文地址:https://blog.csdn.net/weixin_62264287/article/details/133584185