-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfinderror.m
97 lines (85 loc) · 2.12 KB
/
finderror.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
function [errorval, val] = finderror(x,type,mit,mxt,wrapped,burst)
% This function will find the error values for spike data
% generated by lsd (the 'RAW' data format)
%
% errorval=finderror(x,type,mit,mxt,wrapped,burst)
%
% x = The data in 'raw' format (from lsd).
% type = The error type.
% mit,mxt = The times within which to find the error in milliseconds.
% wrapped = Whether the data is wrapped or not.
% burst = whether to look through all spikes or just burst spikes
mit=mit*10; %need to define the limits
mxt=mxt*10-1;
if wrapped == 1 %wrapped is ON
l = 1;
for j = 1:x.numtrials
for k = 1:x.nummods
if burst == 0
s = x.trial(j).mod{k} - x.trial(j).modtimes(k); %because it is wrapped
else
s = x.btrial(j).mod{k} - x.trial(j).modtimes(k); %because it is wrapped
end
m = find( s > mit & s <= mxt );
val(l) = length(m);
l = l+1;
end
end
else %wrapped is OFF
l = 1;
a = [];
for j = 1:x.numtrials
for k = 1:x.nummods
if burst == 0
s=x.trial(j).mod{k}-x.trial(j).modtimes(1); %not wrapped
else
s=x.btrial(j).mod{k}-x.trial(j).modtimes(1); %not wrapped
end
m=find(s>mit & s<=mxt);
a=[a;length(m)];
end
a=sum(a);
val(l)=a;
a=[];
l=l+1;
end
end
errorval=errorfun(val,type);
val = val';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function err = errorfun(edata,type)
% Computes the Error Data
switch(type)
case {'Standard Error', 'SE'}
err=std(edata)';
err=sqrt((err.^2/length(edata)));
case {'Standard Deviation', 'SD'}
err=std(edata)';
case {'2 StdDevs', '2SD'}
err=std(edata)'*2;
case '3 StdDevs'
err=std(edata)'*3;
case {'2 StdErrs', '2SE'}
err=std(edata)';
err=sqrt((err.^2/length(edata)))*2;
case 'Variance'
err=std(edata)'.^2;
case 'Fano Factor'
if max(edata)==0
err=0;
else
err=var(edata)/mean(edata);
end
case 'Coefficient of Variation'
if max(edata)==0
err=0;
else
err=std(edata)/mean(edata);
end
case 'Allan Factor'
if max(edata)==0
err=0;
else
err=var(diff(edata))/(2*mean(edata));
end
end