2015-04-03 3 views
1

Я использую Psychopy v1.81.02, до сих пор я пробовал Builder.Случайно представлены различные задачи в каждом испытании

Моя цель - запрограммировать эксперимент, в котором 32 звука представлены с каждой из двух различных задач. Эти две задачи различаются в инструкции (перед воспроизведением звука) и рейтинге (после воспроизведения звука). Звуки, а также задачи выполняются случайным образом в каждом испытании, то есть каждый звук присваивается обеим задачам один раз, а задачи выполняются случайным образом. В итоге, с 32 звуками, он запускает 64 испытания: каждый звук дважды с обеими задачами, но оба звука и задачи рандомизируются в ходе испытаний.

В Builder, я создал две подпрограммы: Рутинной 1 (= задача 1) состоит из instruction_1 + sound_1 + rating_1 и Обычных 2 (= задача 2) состоит из instruction_2 + sound_1 + rating_2.

Для вызова звуков я включил CSV-файл с одним параметром «audiofile» и 32 условиями (звуковыми файлами) и надел его «случайным». Это работает с рандомизацией звуков, но как я могу сделать задачи в случайном порядке? Я попытался установить цикл вокруг подпрограмм, но не знал, что поставить «туда», чтобы рандомизировать две процедуры - это даже возможно?

ответ

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-файлу. Поместите имена переменных «regular_1_reps» и «regular_2_reps» в свои поля reps. Таким образом, только одна из задач будет представлена ​​в каждом испытании.

Установите основной, внешний контур, чтобы быть случайным. Затем вы должны получить каждый звук дважды, но в рандомизированном порядке. На каждом из этих испытаний будет выполняться только одна задача, опять же в случайном порядке.

+0

Routine_1_loop.nreps = routOrder [] NameError: name 'Routine_1_loop' не определен – Jody

+1

Написание имен внутренних циклов соответствует фрагменту кода. Новые процедуры 0 и 3 помещаются в поток следующим образом: Routine_0 внутри main_loop (со звуками в CSV-файле) и Routine_3 внутри обоих - task_loop (2) и main_loop. Вот Эскиз, как поток выглядит с петлями в скобках: (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

+0

Исходный код Я писал, ссылаясь на петли, прежде чем они были созданы, следовательно, причиной ошибки «имя не определено». Я изменил код, чтобы теперь использовать переменные, а не напрямую пытаться получить доступ к свойству loop reps. +1 для способа представления структуры цикла в тексте. –

 Смежные вопросы

  • Нет связанных вопросов^_^