-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTrial.m
65 lines (56 loc) · 2.64 KB
/
Trial.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
52
53
54
55
56
57
58
59
60
61
62
63
64
classdef Trial
%UNTITLED2 Summary of this class goes here
% XY already rotated and interpolated at 100 Frames/s
properties (Constant)
xyf = [789, 681]; rf = 1; %cm, radius
xy1 = [966, 418]; r1 = 2.216*2.54/2; %*1.1222; %cm, radius
xy2 = [975, 790]; r2 = 3.545*2.54/2; %*1.1222; %cm, radius
xy3 = [604, 799]; r3 = 4*2.54/2; %cm, radius
xy4 = [600, 428]; r4 = 3*2.54/2; %cm, radius
xy0_ref = [787.0169, 605.6858]; %center
pixpercm = 1053.28/(sqrt(2)*100);
end
properties
TEOD, EODR, EODA, EODRq, EODRz, vtEOD, XH, YH, VEL, ACC, ANG, AVEL, ...
HANG, HAVEL, viESAC, vrESAC, vtESAC, vxESAC, vyESAC, ...
img0, dataID, pathLen_cm, xyFood, xy0, xyStart, vlZone, ...
Rfood, Rcentre, vrX, vrY, mrX, mrY, iAnimal, duration, vcError;
end
methods
function obj = Trial(S)
if nargin == 0, return; end
csFields = fieldnames(S);
for iField = 1:numel(csFields)
vcField = csFields{iField};
try
eval(sprintf('field = S.%s;', vcField));
if size(field, 2) == 1 && size(field, 1) > 1, field=field'; end
eval(sprintf('obj.%s = field;', vcField, vcField));
catch
disp(lasterr);
end
end
end %Trial
% Unit in cm
function vrD = calcDistFrom(obj, vcFrom)
vrX = obj.vrX - (obj.xy0(1) - Trial.xy0_ref(1));
vrY = obj.vrY - (obj.xy0(2) - Trial.xy0_ref(2));
switch lower(vcFrom)
case 'food'
vrD = sqrt((vrX-Trial.xyf(1)).^2 + (vrY-Trial.xyf(2)).^2) / Trial.pixpercm - Trial.rf;
case 'landmark1'
vrD = dist2square((vrX-Trial.xy1(1))/Trial.pixpercm, (vrY-Trial.xy1(2))/Trial.pixpercm, Trial.r1);
case 'landmark2'
vrD = dist2square((vrX-Trial.xy2(1))/Trial.pixpercm, (vrY-Trial.xy2(2))/Trial.pixpercm, Trial.r2);
case 'landmark3'
vrD = sqrt((vrX-Trial.xy3(1)).^2 + (vrY-Trial.xy3(2)).^2) / Trial.pixpercm - Tiral.r3;
case 'landmark4'
vrD = sqrt((vrX-Trial.xy4(1)).^2 + (vrY-Trial.xy4(2)).^2) / Trial.pixpercm - Tiral.r4;
case 'center'
vrD = sqrt((vrX-Trial.xy0_ref(1)).^2 + (vrY-Trial.xy0_ref(2)).^2) / Trial.pixpercm;
otherwise
error('calcDistFrom-invalid location-%s', vcFrom);
end
end %calcDistFrom
end %methods
end