LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
returnPer.m
1function [ percentileRTs ] = returnPer( vector, Matrix, pers )
2
3% mean
4meanRT = sum(-vector/Matrix,2);
5
6c = max(-diag(Matrix));
7m = size(Matrix,2);
8P_res = Matrix/c+eye(m);
9
10M = sum(vector/(eye(m)-P_res),2);
11a0 = sum(vector);
12sum_a = a0;
13k = 0;
14vP = sum(P_res,2);
15ak = [];
16while abs(sum_a-M) >= 10^-10
17 k = k+1;
18 ak = [ak,vector*vP];
19 sum_a = sum_a+vector*vP;
20 vP = P_res*vP;
21end
22K1 = k;
23
24%% percentiles
25percentileRTs = zeros(length(pers),2);
26percentileRTs(:,1) = pers;
27for p = 1 : length(pers)
28
29 if pers(p) < 1-sum(vector)
30 percentileRTs(p,2) = 0;
31 else
32 MaxTime = 3*meanRT;
33 flag = 0;
34 while flag == 0
35
36 %% for the MaxTime
37 pM = expm(-c*MaxTime);
38 F = pM*a0;
39 for k = 1 : K1
40 pM = c*MaxTime*pM/k;
41 F = F+pM*ak(k);
42 end
43 per_achieved = 1-F;
44 if per_achieved < pers(p)
45 MaxTime = MaxTime+0.5*meanRT;
46 else
47 for t = MaxTime : -0.001 : 0
48
49 pM = expm(-c*t);
50 F = pM*a0;
51 for k = 1 : K1
52 pM = c*t*pM/k;
53 F = F+pM*ak(k);
54 end
55 CDF_analysis = 1-F;
56
57 if CDF_analysis < pers(p)
58 temp_percentileRT = t+0.001;
59 break
60 end
61 end
62
63 percentileRTs(p,2) = temp_percentileRT;
64 flag = 1;
65 end
66 end
67 end
68
69end