-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPerformance.m
70 lines (66 loc) · 3.11 KB
/
Performance.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
function [Sensivity,Specificity,Preictal_accuracy,Ictal_accuracy,accuracy]=Performance(outSim,T)
% for sensitivity and specificity
True_Positives = 0;
False_Negatives = 0;
True_Negatives = 0;
False_Positives = 0;
%Pre-Ictal and Ictal
true_Preictal = 0;
total_Preictal = 0;
true_Ictal = 0;
total_Ictal = 0;
accuracy = 0; % for InterIctal and Pos-Ictal.
for i=1:length(outSim)
%Acertou InterIctal and Pos-Ictal
if outSim(1,i) > outSim(2,i) && outSim(1,i) > outSim(3,i) && outSim(1,i) > outSim(4,i) && T(1,i) == 1
accuracy = accuracy + 1;
end
if outSim(4,i) > outSim(1,i) && outSim(4,i) > outSim(3,i) && outSim(4,i) > outSim(2,i) && T(4,i) == 1
accuracy = accuracy + 1;
end
%Acertou Pre-Ictal e Ictal
if outSim(3,i) > outSim(1,i) && outSim(3,i) > outSim(2,i) && outSim(3,i) > outSim(4,i) && T(3,i) == 1
True_Positives = True_Positives + 1;
elseif outSim(2,i) > outSim(1,i) && outSim(2,i) > outSim(3,i) && outSim(2,i) > outSim(4,i) && T(2,i) == 1
True_Positives = True_Positives + 1;
%Acertou que nao é Pre-Ictal ou Ictal.
elseif (outSim(3,i) < outSim(1,i) || outSim(3,i) < outSim(2, i) || outSim(3,i) < outSim(4,i)) && T(3,i) ~= 1
True_Negatives = True_Negatives + 1;
elseif (outSim(2,i) < outSim(1,i) || outSim(2,i) < outSim(3, i) || outSim(2,i) < outSim(4,i)) && T(2,i) ~= 1
True_Negatives = True_Negatives + 1;
end
%Falhou Pre-Ictal e Ictal. Pensa que era Pre-Ictal ou Ictal mas nao era
if outSim(3,i) > outSim(1,i) && outSim(3,i) > outSim(2,i) && outSim(3,i) > outSim(4,i) && T(3,i) ~= 1
False_Positives = False_Positives + 1;
elseif outSim(2,i) > outSim(1,i) && outSim(2,i) > outSim(3,i) && outSim(2,i) > outSim(4,i) && T(2,i) ~= 1
False_Positives = False_Positives + 1;
%Falhou que nao era Pre-Ictal ou Ictal. Rede pensa que nao era
%Pre-Ictal ou Ictal mas era.
elseif (outSim(3,i) < outSim(1,i) && outSim(3,i) < outSim(2,i) && outSim(3,i) < outSim(4,i)) && T(3,i) ==1
False_Negatives = False_Negatives + 1;
elseif (outSim(2,i) < outSim(1,i) && outSim(2,i) < outSim(3,i) && outSim(2,i) < outSim(4,i)) && T(2,i) ==1
False_Negatives = False_Negatives + 1;
end
%Calculating Prei_Ictal Accuracy.
if T(2, i) == 1
if outSim(2,i) > outSim(1,i) && outSim(2,i) > outSim(3, i) && outSim(2,i) > outSim(4, i)
true_Preictal = true_Preictal + 1;
end
total_Preictal = total_Preictal + 1;
end
%Calculating Ictal Accuracy.
if T(3, i) == 1
if outSim(3,i) > outSim(1,i) && outSim(3,i) > outSim(2, i) && outSim(3,i) > outSim(4, i)
true_Ictal = true_Ictal + 1;
end
total_Ictal = total_Ictal + 1;
end
end
%Calculating Statistics.
Preictal_accuracy = (true_Preictal / total_Preictal) * 100;
Ictal_accuracy = (true_Ictal / total_Ictal) * 100;
Sensivity = True_Positives / ( True_Positives + False_Negatives );
Specificity = True_Negatives / (True_Negatives + False_Positives );
accuracy = accuracy + True_Positives;
accuracy = accuracy / length(outSim);
accuracy = accuracy * 100;