|
|
这是按钮的回调函数,KNN是其中调用到的一个函数0 v, v, b' {8 t! E* N
function train_Callback(hObject, eventdata, handles)
& [) m: {2 M* l" Xglobal fea
; f: W+ F( N4 L, {& E3 Uglobal classifier. d4 L9 }7 M2 o9 c* R% ^ ?( ]. T
global rnum
) k5 o" T1 u) L7 F
9 s+ \9 R" K9 @: {/ B/ Q/ ? load('feature.mat');
, z6 w. l: X l3 R/ J2 o load('label1');
' ?3 C5 Y; F3 ] if fea==[0 0 0 0 0]
. A. t/ A% m3 q3 {& Q errordlg('Error!Please choose features','Error');2 G1 H$ U* N4 |5 u3 L/ r, q% C
elseif fea==[1 0 0 0 0]
6 |. R J7 I- Q$ L+ B, n feature=[ampmat];
# S. \' P' [/ S elseif fea==[0 1 0 0 0]! r5 m1 P, ?5 s% ]1 r. d0 `- X* s8 E
feature=[energymat];
" f& A# U! K) I9 v/ K elseif fea==[0 0 1 0 0]
( F, h @# [7 R* g feature=[entropymat];* a1 D* K" i& T
elseif fea==[0 0 0 1 0]
7 p4 D7 K% t! f7 f w feature=[fremat];+ Y0 p* S7 }3 O6 e4 Z
elseif fea==[0 0 0 0 1]; w2 p& X7 K- n* o/ z2 b
feature=[mfccmat];
2 N; X+ Q0 ]9 e5 X7 \ elseif fea==[1 1 0 0 0]; y2 A8 @/ }( N1 ]% V
feature=[ampmat,energymat];& A& g' e% X$ I4 @; K
elseif fea==[1 0 1 0 0]1 T1 \( X0 }7 e8 s
feature=[ampmat,entropymat];* M6 r+ W) z. S9 Z
elseif fea==[1 0 0 1 0]; w5 a" S5 o: q3 f
feature=[ampmat,fremat];
! @. d# J: a% Z0 E0 N. q5 R& i) y elseif fea==[1 0 0 0 1]7 o: A! C; i$ W0 Q- r
feature=[ampmat,mfccmat];
' H# r5 R/ d) G% _. z# V' e9 M- E elseif fea==[0 1 1 0 0]
1 |( z. b( U$ G E feature=[energymat,entropymat];
% q. p8 E' o5 T2 m9 u6 x elseif fea==[0 1 0 1 0]- Q) H; {! [5 n; m) k5 g
feature=[energymat,fremat];/ V3 B1 T! o7 N0 G
elseif fea==[0 1 0 0 1]
; ^& U. w( |+ P7 X$ u5 j feature=[energymat,mfccmat];
# p+ s4 H& X( O# `) f elseif fea==[0 0 1 1 0]" \2 _& \9 \0 L/ z- j
feature=[entropymat,fremat];
8 r" g Q3 g. O3 s! ]/ K elseif fea==[0 0 1 0 1]
$ o- R' o: h6 ?4 N" c feature=[entropymat,mfccmat];
/ C5 [3 x$ @/ B5 P' D& K% @; J1 o elseif fea==[0 0 0 1 1]
, P7 b$ x, d0 e4 w4 ~) I feature=[fremat,mfccmat];
! ~" ~( j2 m4 V9 \; s2 A elseif fea==[1 1 1 0 0]
& ?- Y0 ~; ~" y$ v2 X" H feature=[ampmat,energymat,entropymat];
7 a1 \0 G! G1 E; ~0 X4 b8 r elseif fea==[1 1 0 1 0]
+ y2 R( L# M. _' x. d9 v1 Z; C feature=[ampmat,energymat,fremat];
4 N5 C, D' ~) `9 w6 K elseif fea==[1 1 0 0 1]
+ s: n1 u+ {4 g- Z feature=[ampmat,energymat,mfccmat];
' @' ~: L$ X: }9 ^& w( [ elseif fea==[1 0 1 1 0]
/ Z; d! ?2 W( G feature=[ampmat,entropymat,fremat];3 ^; G3 G% J$ k" `- r
elseif fea==[1 0 1 0 1]) {) N! b0 [% F/ b
feature=[ampmat,entropymat,mfccmat];
7 I& h- R+ W! k elseif fea==[1 0 0 1 1]
3 P' |* p i/ O" j Q: t" l+ G# N feature=[ampmat,fremat,mfccmat];
1 H4 n1 |# y' _# z% r elseif fea==[0 1 1 1 0]- r0 ^( U3 l( t- l% S) M' y2 I. n
feature=[energymat,entropymat,fremat];* [" Y' K, |( n0 |) d
elseif fea==[0 1 1 0 1]4 @3 O$ ?- i! z( A$ z9 w! @, l
feature=[energymat,entropymat,mfccmat];, G4 h5 x3 |; s: X- e
elseif fea==[0 1 0 1 1]
& S6 b: v- a4 `1 r feature=[energymat,fremat,mfccmat];
0 J2 ]* f0 ^, S0 _. l+ P( {9 s elseif fea==[0 0 1 1 1]4 X% m D" \7 q0 D {7 h
feature=[entropymat,fremat,mfccmat];% p; C# n1 q5 [* ]
elseif fea==[1 1 1 1 0]) L; R+ L2 n8 J# ^
feature=[ampmat,energymat,entropymat,fremat];- W" W- x4 }$ U# \: a
elseif fea==[1 1 1 0 1]$ f, C# M4 o, B5 T+ C
feature=[ampmat,energymat,entropymat,mfccmat];0 c$ B* H( x' }# \* O9 I# F
elseif fea==[1 1 0 1 1]8 ?, H, Y7 B( N( n
feature=[ampmat,energymat,fremat,mfccmat];
6 e6 N0 L" F6 F) \$ R& ^+ h% H) ` elseif fea==[1 0 1 1 1]( G0 B: l/ T t0 t$ ?6 A
feature=[ampmat,entropymat,fremat,mfccmat];
5 M3 U6 M: }0 p$ J- U+ p elseif fea==[0 1 1 1 1]% J' H, O+ O) Q1 z! S) Y. B
feature=[energymat,entropymat,fremat,mfccmat];
$ A) C/ g/ _1 J9 }& [7 ^# H elseif fea==[1 1 1 1 1]
6 F' g8 x3 @0 l8 w. j feature=[ampmat,energymat,entropymat,fremat,mfccmat];( a% j$ q/ b- E( j, O3 e6 Z
else7 r8 E; s2 K6 n1 l
errordlg('Error!Please choose features','Error');3 J- `% A2 I M o: \
end
- \$ N' v' m% z7 }
/ q) z( m G% ^0 X% y" \( M
' S/ @3 ]2 ]4 e! Y# F r=randperm(600);
& o+ m: T, s( V& V5 d9 I X0=feature(r, ;
. C1 Q& V! B" X" U: U Xtrain=X0(1:420, ;7 @3 E) \, e1 @+ b
Xtest=X0(421:600, ;- Z! I. T8 `, O/ [9 E5 Z( y8 r/ d
label0=label1(r,:);
; ~5 W# }$ R: s1 J+ l labeltrain=label0(1:420,:);# f7 a" `' }2 Y7 d
labeltest=label0(421:600,:);8 k/ b4 o2 f! K7 N1 `2 \
TResult=KNN(Xtrain,Xtest,labeltrain);
% o$ h! o) ?( d2 O3 \ rnum=0;
' o$ q9 h* O- E! L* ?( z9 f for i=1:180
3 [+ F6 n: ?; M* [* Y if TResult(i)==labeltest(i)5 D$ f2 a5 L, N! t* J6 Z7 ~
rnum=rnum+1;$ C# u3 @% ?6 j2 P0 b. R6 i1 T
end- w1 j, V3 W; y# _% a
end
7 m, G0 ?: Z7 c: j5 c. w 5 q0 ?2 |! F3 \+ v+ Y2 [% m
set(handles.edit1,'String','loading completed');
7 n# S) R7 H( |* I set(handles.edit2,'String',num2str(rnum/180));8 A4 {9 D* q/ W0 Q
% E z2 V+ e6 E) o- J8 {function result=KNN(train,test,trainlabel)4 \1 c. x" ]- j- u; f4 x% J
k=2;
# O' j6 _ I; W# Q, Ctestlength=length(test(:,1));6 l3 L! y% c& o+ o6 E- [6 M' X V
trainlength=length(train(:,1));
, A! R# N; } G" }for i=1:testlength
2 v) K; k& U9 \: y dist=zeros(trainlength,1);
/ |! g, R3 e6 \& H for j=1:trainlength
1 _4 R. r9 ~! W" o dist(j)=distance(test(i,:),train(j,:),1);
6 q) s# k1 R/ {6 z6 W, ^3 o& J end
{7 D; h4 _; m* ~2 U6 J/ X [Y,I]=sort(dist,1);
! o: u" _' G0 ?6 A! S k=min(k,length(Y));! {! A2 \( Q8 G. S9 U& X
labels=trainlabel(I);# J; Z: \3 _- L0 F! [2 D, V* U
result(i)=mode(labels(1:k));/ }0 K9 M9 V# X0 h% R4 I7 v, N/ I
end |
|