/
MotionQuartet.m
51 lines (31 loc) · 2.05 KB
/
MotionQuartet.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
classdef MotionQuartet < StimulusObject
properties
horizontalDistance = 40
verticalDistance = 40
luminanceValues = [100 255]
%startOrientation = 0
elementSize = 15 % assume always odd for now
end
methods
function frames = generate(obj)
gridSize = [obj.verticalDistance+obj.elementSize-1 obj.horizontalDistance+obj.elementSize-1];
frames = zeros(obj.verticalDistance+obj.elementSize-1,...
obj.horizontalDistance+obj.elementSize-1, obj.nFrames);
for frame = 1:obj.nFrames
if mod(frame,2)
% define frame 1 luminances at desired locations
frames(1:obj.elementSize, 1:obj.elementSize, frame) = obj.luminanceValues(1);
frames(gridSize(1)-obj.elementSize+1:gridSize(1), gridSize(2)-obj.elementSize+1:gridSize(2),frame) = obj.luminanceValues(1);
frames(gridSize(1)-obj.elementSize+1:gridSize(1), 1:obj.elementSize, frame) = obj.luminanceValues(2);
frames(1:obj.elementSize, gridSize(2)-obj.elementSize+1:gridSize(2),frame) = obj.luminanceValues(2);
else
% define frame 2 luminances at desired locations
frames(1:obj.elementSize, 1:obj.elementSize, frame) = obj.luminanceValues(2);
frames(gridSize(1)-obj.elementSize+1:gridSize(1), gridSize(2)-obj.elementSize+1:gridSize(2),frame) = obj.luminanceValues(2);
frames(gridSize(1)-obj.elementSize+1:gridSize(1), 1:obj.elementSize, frame) = obj.luminanceValues(1);
frames(1:obj.elementSize, gridSize(2)-obj.elementSize+1:gridSize(2),frame) = obj.luminanceValues(1);
end
end
end
end
end