My favorites
|
Sign in
myopen
Myoelectric signal processing and pattern recognition for control.
Project Home
Downloads
Wiki
Issues
Source
Checkout
|
Browse
|
Changes
|
r247
Source path:
svn
/
trunk
/
ceven
/
LDA.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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% LDA Perform a linear discriminant analysis
%
% Inputs: TrainData,TestData - Train,test data arranged in columns
% TrainClass,TestClass - vectors of class membership
% Outputs:PeTrain,PeTest - probability of error
% TrainPredict,TestPredict - predicted values
% Wg,Cg - LDA weights
% (c) Kevin Englehart,1997
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [PeTrain,PeTest,TrainPredict,TestPredict,Wg,Cg] = lda(TrainData,TestData,TrainClass,TestClass);
clear C N K Mi Ptrain Ptest sc Ate Atr errtr Cinv Pphi AAte errte nete
N = size(TrainData,1);
Ptrain = size(TrainData,2);
Ptest = size(TestData,2);
sc = std(TrainData(:));
TrainData = TrainData + sc./1000.*randn(size(TrainData));
K = max(TrainClass);
%%-- Compute the means and the pooled covariance matrix --%%
C = zeros(N,N);
for l = 1:K;
idx = find(TrainClass==l);
Mi(:,l) = mean(TrainData(:,idx)')';
C = C + cov((TrainData(:,idx)-Mi(:,l)*ones(1,length(idx)))');
end
C = C./K;
Pphi = 1/K;
Cinv = inv(C);
%%-- Compute the LDA weights --%%
for i = 1:K
Wg(:,i) = Cinv*Mi(:,i);
Cg(:,i) = -1/2*Mi(:,i)'*Cinv*Mi(:,i) + log(Pphi)';
end
%%-- Compute the decision functions --%%
Atr = TrainData'*Wg + ones(Ptrain,1)*Cg;
Ate = TestData'*Wg + ones(Ptest,1)*Cg;
errtr = 0;
AAtr = compet(Atr');
errtr = errtr + sum(sum(abs(AAtr-ind2vec(TrainClass))))/2;
netr = errtr/Ptrain;
PeTrain = 1-netr;
TrainPredict = vec2ind(AAtr);
errte = 0;
AAte = compet(Ate');
errte = errte + sum(sum(abs(AAte-ind2vec(TestClass))))/2;
nete = errte/Ptest;
PeTest = 1-nete;
TestPredict = vec2ind(AAte);
return;
Show details
Hide details
Change log
r30
by openprosthetics on Jun 19, 2008
Diff
[No log message]
Go to:
/trunk/ceven
/trunk/ceven/LDA.M
/trunk/ceven/MLP2.m
/trunk/ceven/acqlegend.m
/trunk/ceven/armcolor.fig
/trunk/ceven/armcolor.m
/trunk/ceven/armlimits.fig
/trunk/ceven/armlimits.m
/trunk/ceven/armspeeds.fig
/trunk/ceven/armspeeds.m
/trunk/ceven/armzoomrotate.fig
/trunk/ceven/armzoomrotate.m
/trunk/ceven/arorder.fig
/trunk/ceven/arorder.m
/trunk/ceven/ceven.fig
/trunk/ceven/ceven.m
/trunk/ceven/chuck gripping.jpg
/trunk/ceven/clothespin.m
/trunk/ceven/clothespinResults.fig
/trunk/ceven/clothespinResults.m
/trunk/ceven/clothespinSetup.fig
/trunk/ceven/clothespinSetup.m
/trunk/ceven/clothespin_operate.m
/trunk/ceven/contractionsgui2.fig
/trunk/ceven/contractionsgui2.m
/trunk/ceven/dist_between.m
/trunk/ceven/eating candy.jpg
/trunk/ceven/elbow extension.jpg
/trunk/ceven/elbow flexion.jpg
/trunk/ceven/elbow_extend.m
/trunk/ceven/elbow_flex.m
/trunk/ceven/finger_segment.m
/trunk/ceven/fingertip.m
/trunk/ceven/forearm pronation.jpg
/trunk/ceven/forearm supination.jpg
/trunk/ceven/forearm.m
...nk/ceven/gently move fingers.jpg
/trunk/ceven/hand_close_key.m
/trunk/ceven/hand_close_power.m
/trunk/ceven/hand_fingers_close.m
/trunk/ceven/hand_fingers_spread.m
/trunk/ceven/hand_open_key.m
/trunk/ceven/hand_open_power.m
/trunk/ceven/key gripping.jpg
/trunk/ceven/laq.fig
/trunk/ceven/laq.m
/trunk/ceven/look at a disk.jpg
/trunk/ceven/look at palm.jpg
/trunk/ceven/low hand wave.jpg
/trunk/ceven/lower an object.jpg
Project members,
sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 1689 bytes, 61 lines
View raw file
Hosted by