【问题标题】:Loops within loops in PsychoPy BuilderPsychoPy Builder 中的循环内循环
【发布时间】:2016-05-25 11:23:21
【问题描述】:

我是编程新手,我在 PsychoPy builder 中构建的实验需要一些帮助。我做了一些有用的东西,但我可以说它不优雅,必须有更好的方法。

我想进行 24 次试验。每个试验将显示 7 个独特的图像,然后是 1 个图像,可能来自这 7 个图像,也可能不是,然后要求用户输入 y/n(如果他们以前看过该图像)。

在我当前的代码中,我创建了 24 个单独的输入文件,每个文件都包含一个唯一对象列表。我创建了一个循环,连续显示七个对象。然后,我为预审固定屏幕(所有 24 次试验的常量)和响应(手动编程的探针图像和正确答案)创建了单独的例程。该代码有效,但它很长,如果我想更改注视或探测/响应中的某些内容,我需要单独更改 24 个试验中的每一个。

我怎样才能让 Builder 创建一个循环,其中包含固定屏幕(常量)、试验循环(选择接下来的七个唯一对象(它们从 1-168 依次命名),然后是一个探测/响应每个试验都是唯一的(我在输入文件中有这些,如下所示。探针是指 1 到 7 之间的数字,它引用试验中显示的序列中图像的位置。)

TrialNumber Probe CorrAns 1 4 0 2 3 1 3 4 0 4 5 1 5 4 1 ...

我希望我的问题是有道理的,如果能提供任何帮助,我将不胜感激。

感谢 PsychoPy 初学者。

【问题讨论】:

    标签: builder psychopy


    【解决方案1】:

    是的,你说得对,有一种(很多)更有效的方法可以做到这一点。

    首先,从您的条件文件(即 .csv 或 .xlsx)开始。你只需要其中之一。它应该有 24 行(每个试验一个)。它将需要 8 列:7 列用于指定试验中的唯一图像,第 8 列用于指定重复图像。

    其次,您需要一个循环来控制试验。这与条件文件相关联,并包含所有例程(预审固定和图像例程。

    第三,您需要第二个内循环,嵌套在外循环内。这仅包括图像例程。即固定例程将运行 24 次(每个外循环一次),图像例程将运行 7×24 次(即每次试验 7 次)。内部循环没有连接到条件文件,只是设置为运行 7 次。

    因此请注意,您在 Builder 中不再有 24 个独立的例程,而只有两个(固定和图像例程)。您无需重复例程,而是通过循环重复它们。

    在图像刺激图像字段中,您可以构建图像名称以用于每个演示文稿。例如假设条件文件中的 8 列标记为“image0”、“image1”等。然后在图像字段中,输入如下内容:

    $'image' + str(yourInnerLoopName.thisN)

    即在每个试验的第一次迭代中,图像文件名将来自列image0,第二个来自image1,依此类推。

    我不知道您是如何处理响应的,但您可能还需要条件文件中的第九列来指示正确响应是什么。键盘组件可以访问它来判断响应是否正确。

    【讨论】:

    • 非常感谢!这是一种更好的方法。
    • 太棒了。如果它适合您,请接受答案,作为未来读者的指南。
    猜你喜欢
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2014-06-18
    • 2022-11-11
    • 1970-01-01
    相关资源
    最近更新 更多