变动刺激时长与两种固定ISI在PsychoPy中

1 投票
2 回答
1072 浏览
提问于 2025-04-18 08:44

我刚接触PsychoPy,正在使用Builder这个工具。对Python编程一点都不熟悉。

我有一些音频刺激,它们的持续时间不一样。在每次实验中,我想让第二个刺激在第一个刺激结束后500毫秒或1500毫秒后开始。请问在Builder里能做到吗?如果必须在Coder里操作,我该怎么做呢?

非常感谢!

2 个回答

1

简单来说,当你在构建器中添加一个声音组件时,你只需要在“开始(时间)”字段中输入一个表达式,这个表达式要考虑到第一个声音刺激的持续时间和这次实验的ISI(刺激间隔时间)。

比如,如果你在条件文件中有一列是ISI(假设叫“ISI”),还有一个声音组件是第一个听觉刺激(假设叫“sound1”),那么你可以在第二个声音刺激的开始字段中写:

$sound1.getDuration() + ISI

这里的$符号表示这一行是要作为Python代码来理解,而不是字面上的持续时间。

这个表达式假设sound1是在实验开始时就开始播放的。如果它是在实验开始后1秒钟才开始播放,那么你只需要在表达式中加上一个常数:

$1.0 + sound1.getDuration() + ISI

你的ISI列应该包含以秒为单位的数值。如果你更喜欢用毫秒表示,那就这样写:

$sound1.getDuration() + ISI/1000.0

3

当然可以。把500毫秒和1500毫秒想象成两种不同的情况,你需要在这些情况下进行循环。这两种情况会和不同的时间长度结合在一起。

在你的条件文件里,那里有不同的时间长度(当然你也可以用随机函数来实现),对于每个时间长度,添加两行,里面有一个叫“soa”的列(或者你想叫的其他名字),填上500毫秒和1500毫秒这两个值。在构建界面中,你可以选择展示的顺序是顺序的、在一个块内随机的,还是在所有试验中完全随机的(不仅仅是在一个块内)。另外,如果你不想要平衡的比例(比如20%是1500毫秒,80%是500毫秒),你可以添加适当数量的行来达到这个比例(比如1/5是1500毫秒)。

几乎所有的演示都是这样处理试验的,所以你可以看看构建器中的演示 --> 点击循环,看看是怎么做的。同时,阅读一下在线文档的相关部分,还可以看看一个视频教程,里面也有相关内容。

撰写回答