Я хочу генерировать объекты изображения в случайных местах в психоанализе.

Есть ли способ генерировать объекты изображения, которые появляются в случайных местах, с ограничением, что один из них должен быть целью, которая появляется в одном из 12 возможных мест отвлечения?


person Glitch_311    schedule 18.10.2014    source источник
comment
Я так себе представляю. Но вам действительно придется дать гораздо более точное описание того, что вы хотите реализовать. Есть очень много способов интерпретировать то, что вы написали выше.   -  person Michael MacAskill    schedule 18.10.2014


Ответы (2)


Майкл прав, дополнительная информация была бы полезна, но если я вас правильно понял, попробуйте что-то вроде этого:

1/добавьте пользовательский объект кода в пробный цикл

2/ на вкладке «Начать эксперимент»:

import random, copy
from random import randint
from decimal import *

# setup an array to store 6 locations to randomly allocate to our shapes 
# (or select random locations between (-1,-1) and (1,1) if you want them completely 
# random though you then need to factor in overlaying shapes)
master_positions=[[0.2,0.6],[0.2,0],[0.2,-0.6],[0.6,0.6],[0.6,0],[0.6,-0.6]]
positions = copy.deepcopy(master_positions)

3/ во вкладке «Начать процедуру»:

# reset 'positions' 
positions = copy.deepcopy(master_positions) 

#randomise this for each trial
random.shuffle(positions)

4/Затем на изображении/многоугольнике (или что-то еще) для вашего объекта вместо жесткого кодирования координат (x, y) вместо этого ссылайтесь на переменную position. Не забудьте изменить параметр раскрывающегося меню справа от него с «постоянный» на «установить каждый повтор», например.

$positions[3] 

Итак, если у вас есть 6 объектов для случайного позиционирования, используйте $positions[0] .. [5] , по одному для каждого объекта.

Вы можете сделать что-то подобное, чтобы изменить размер, цвет и т. д.

Надеюсь, это дает вам суть. Что касается местоположения отвлекающих факторов, вы можете иметь 2 массива для хранения местоположений вместо одного и случайным образом выбирать один из списка отвлекающих элементов для использования каждый раз.

person jacanterbury    schedule 21.10.2014

Если я правильно понимаю ваш вопрос, у вас есть 12 стимулов, которые вы хотите разместить в случайных местах, с ограничением, что одно из изображений (выбранных случайным образом) должно появиться в одном месте (выбранном случайным образом) в наборе фиксированных мест.

я думаю, что правильный подход состоит в том, чтобы сначала сгенерировать ваши местоположения стимулов, а затем назначить каждое местоположение изображению:

import numpy as np

# define fixed locations
fixedlocations=np.array([[100,10],
                         [-50,20],
                         [10,50]])

# define window constants
winx = 500
winy = 400

# get list of random locations
locations =  np.random.uniform(low = -1,high = 1, size = [12,2])

# scale locations to window size
locations[:,0] *= winx
locations[:,1] *= winy

# i think psychopy requires integers for coordinates
locations =  locations.round()

# pick a random fixed location and insert into the random locations
whichrandom = np.random.randint(low=0, high=12)
whichfixed = np.random.randint(low=0, high=2)

# substitute a random fixed location in at a random row
locations[whichrandom,:] = fixedlocations[whichfixed,:]

Все, что я сделал, это случайным образом сгенерировал набор из 12 возможных местоположений в окне, а затем заменил одно (случайно выбранное) местоположение случайно выбранным местоположением из фиксированного набора.

Затем вы можете назначить местоположения для каждого стимула, используя цикл for. если ваши стимулы находятся в списке, вы можете сделать что-то вроде этого:

for i in range(12):
    mystimuli[i].setPos(locations[i,:])
person Nolan Conaway    schedule 27.01.2015