2015-04-03 56 views
1

我使用Psychopy v1.81.02,到目前为止我尝试了Builder。每个试验中随机呈现不同的任务

我的目标是编写一个实验,其中32个声音与两个不同任务中的每一个一起呈现。这两个任务在说明(播放声音之前)和评分(声音播放之后)上有所不同。声音和任务在每次试验中随机发生,即每个声音被分配给两个任务一次,任务随机发生。最后,有32个声音,它运行64次试验:每次都发出两次声音,但两个声音和任务在试验中随机分配。

在生成器中,我创建两个例程: 例程1(=任务1)由instruction_1 + sound_1 + RATING_1的和常规 2(=任务2)由instruction_2 + sound_1 + rating_2的。

为了调用声音,我包含一个带有一个参数“audiofile”和32个条件(声音文件)的.csv文件,并将其放在“随机”上。只要声音随机化就行,但我怎样才能使任务按随机顺序发生?我试图围绕这些例程进行循环,但不知道该如何“随意”放置两个例程 - 这甚至有可能吗?

回答

0

正如你怀疑的那样,你将需要在你当前的环中嵌套额外的循环。实质上,您将围绕每项任务进行循环,并给它一个0或1的重复值以确定它是否发生在给定的试验中。 (1)构造您的.csv文件,使其看起来像下面的示例:每个声音文件名都会出现两次,因为它会在两次试验中出现。还有另外两列,其指定的任务,将上试发生,这将抵消:

soundFile routine_1_reps routine_2_reps 
snd01.wav 0     1 
snd01.wav 1     0 
snd02.wav 0     1 
snd02.wav 1     0  
etc... 

(2)将环周围Routine_1和另一只有各地Routine_2,调用,比如说,Routine_1_loop和Routine_2_loop。即这些环嵌套在主环内。不要将它们连接到.csv文件。将变量名称“routine_1_reps”和“routine_2_reps”放入其代表字段中。这样,每个试验中只有一个任务会出现。

将主循环设置为随机。然后,你应该让每个声音播放两次,但随机顺序。这些试验中只有一项任务会按随机顺序进行。

+0

Routine_1_loop.nreps = routineOrder [] NameError:名称'Routine_1_loop'未定义 – Jody 2015-04-05 09:20:33

+1

内部循环的名称的拼写对应于该段代码。 新的例程0和3放在流程中,如下所示:main_loop中的Routine_0(在.csv文件中声音)和Routine_3都在task_loop(2)和main_loop中。 这里是一个scetch流怎么看起来像括号中的循环: (main_loop_sound)Routine_0(task_loop)(Routine_1_loop)Routine_1(Routine_1_loop)(Routine_2_loop)Routine_2(Routine_2_loop)Routine_3(task_loop)(main_loop_sound) – Jody 2015-04-05 09:22:43

+0

原代码我发布的是指在实例化之前的循环,因此导致“名称未定义”错误。我已经修改了代码,现在使用变量而不是直接尝试访问循环代表属性。 +1表示文本中循环结构的方式。 – 2015-04-06 20:50:41