|
这是按钮的回调函数,KNN是其中调用到的一个函数
+ \5 n' _, e; M3 G0 A, ofunction train_Callback(hObject, eventdata, handles)
9 N/ R. ]3 Q) X2 ?+ D6 p& g: xglobal fea
* P% O: A& Z2 @! Nglobal classifier
7 u9 u0 Y! @4 y6 `8 }- M) b0 b4 ^global rnum
+ B0 W6 D, { V" a5 g2 j2 d4 u: Y9 L; f* X3 Y
load('feature.mat');) _& `' a0 P! H6 b A4 q$ J \
load('label1');
& e1 I, N# Z$ \- w! Z if fea==[0 0 0 0 0]7 K% e: b9 `, I: E
errordlg('Error!Please choose features','Error');
! U! r/ A* p5 K$ e! N elseif fea==[1 0 0 0 0]
. f, V+ [1 V( r' L2 P Z feature=[ampmat];
) o! q- A. H! w+ ~8 }% e. G$ J elseif fea==[0 1 0 0 0]+ Y/ P% ?% w F5 F& o/ e; b
feature=[energymat];3 e. g& f) S9 u. D3 @5 k1 n5 C
elseif fea==[0 0 1 0 0]
; I+ l2 `5 V2 h& }. f4 T feature=[entropymat];9 T2 Z. Y6 @8 n5 C! A
elseif fea==[0 0 0 1 0]
# z, t$ H6 e" v feature=[fremat];
4 G- j- u+ H3 W* F. } elseif fea==[0 0 0 0 1]$ R- w O$ C. e. ]3 @
feature=[mfccmat];8 P2 `3 T' q4 r" B/ f x
elseif fea==[1 1 0 0 0]; { M& G4 m: k6 i
feature=[ampmat,energymat];
6 B N; t, \2 Y elseif fea==[1 0 1 0 0]
6 o4 K5 y7 Q2 F, c: [ W( l/ T feature=[ampmat,entropymat];6 U* o8 F- M0 L. ~9 ^1 S
elseif fea==[1 0 0 1 0]$ o. Q5 ?# U1 W: U% j
feature=[ampmat,fremat];, E$ U5 ~3 R9 |
elseif fea==[1 0 0 0 1]9 g/ ~1 u# q9 v
feature=[ampmat,mfccmat];
2 U% G$ v8 _0 `1 ]" Q1 x elseif fea==[0 1 1 0 0]2 t g4 y7 L1 N' Q X* U6 h
feature=[energymat,entropymat];: ]; W; i7 b" r
elseif fea==[0 1 0 1 0]; D4 s$ u) L+ w+ D
feature=[energymat,fremat];- s4 a# {/ G% W% ]6 w( D
elseif fea==[0 1 0 0 1]
1 `3 h L+ T/ Y( U+ r$ M feature=[energymat,mfccmat];
4 l$ | C% U: x3 u0 U+ }% z2 H5 N# r elseif fea==[0 0 1 1 0]/ Q6 ^) A3 p% W6 p8 ~
feature=[entropymat,fremat];
3 M9 }2 i4 n" C; B# T+ H elseif fea==[0 0 1 0 1]
4 x) V' Z! d7 {# ?& {' } feature=[entropymat,mfccmat];1 \6 C+ d7 p! {
elseif fea==[0 0 0 1 1]
! t+ |8 B+ N: T2 s" ?. s& v/ d feature=[fremat,mfccmat];7 U# L' I3 a$ `' q3 u" p
elseif fea==[1 1 1 0 0]2 w& B4 y( y! K4 o4 P! v
feature=[ampmat,energymat,entropymat];9 |7 J2 L0 {' B
elseif fea==[1 1 0 1 0]( Q1 t! g; G% G# B% F9 \
feature=[ampmat,energymat,fremat];
" s2 X, V/ l8 ^ H elseif fea==[1 1 0 0 1]
$ ?5 r& |6 o! j feature=[ampmat,energymat,mfccmat];! K `/ }. }& d3 j
elseif fea==[1 0 1 1 0]" d' F' U& a, `5 L# A( |7 G
feature=[ampmat,entropymat,fremat];
/ x. D' D( I6 E9 O( L* H elseif fea==[1 0 1 0 1]
$ h) M, c f, J1 T feature=[ampmat,entropymat,mfccmat];0 I; h: y' c' K$ k: l
elseif fea==[1 0 0 1 1]# R2 j# B, _4 e+ t: f. m. Q
feature=[ampmat,fremat,mfccmat];8 r+ A1 u6 \5 m# F4 S
elseif fea==[0 1 1 1 0] y% g, h9 e" V# R5 B' y/ H. R
feature=[energymat,entropymat,fremat];: b U/ `: t/ ?. v
elseif fea==[0 1 1 0 1]
6 s: G$ ^( ]9 d2 r( ~( f. f F feature=[energymat,entropymat,mfccmat];
|9 g" L$ h% G0 g elseif fea==[0 1 0 1 1]5 H0 _$ {' d* L3 e' b
feature=[energymat,fremat,mfccmat];9 p; F/ O) b" W) d; Y1 h8 b
elseif fea==[0 0 1 1 1]
+ @6 N% S4 O$ I9 S1 V# D9 ?1 | feature=[entropymat,fremat,mfccmat];( a. f8 i6 ~: y9 S6 _! ]4 ~9 a
elseif fea==[1 1 1 1 0]3 p0 w" g( Y' k+ L7 _ i' [( D
feature=[ampmat,energymat,entropymat,fremat];
9 d3 X0 X& a9 _% O" s, V elseif fea==[1 1 1 0 1]" d# z1 x, a5 t. n- N) P
feature=[ampmat,energymat,entropymat,mfccmat];
& L# s0 j' W r: j9 F elseif fea==[1 1 0 1 1]" Z$ v7 j" V3 g9 ^% N( X- X# r' q) |6 V
feature=[ampmat,energymat,fremat,mfccmat];! }% W1 G) M% W8 B X
elseif fea==[1 0 1 1 1]9 Z; S) u5 x. M( Q: c8 U! s) Q
feature=[ampmat,entropymat,fremat,mfccmat];
) J! S' i7 t& |- V. T1 L: ^+ m: ] elseif fea==[0 1 1 1 1]6 [. K4 u3 q& M$ D$ T; A4 e
feature=[energymat,entropymat,fremat,mfccmat];
5 g# i( S0 A D& T elseif fea==[1 1 1 1 1]2 K1 n: [) c) o- W+ U
feature=[ampmat,energymat,entropymat,fremat,mfccmat];
9 K; A1 L( `& G- L; V; _ else5 c5 l+ i( m( r
errordlg('Error!Please choose features','Error');0 R% D+ v9 D. J+ t% L
end) F; q0 h# J( l' o! N6 w. q! @+ k
3 y* q* P$ l$ l6 X
2 L6 h2 v- S/ a @ r=randperm(600);- f! Z( [7 J! T) i
X0=feature(r, ;
) g: U& f7 @; v+ O2 c) B+ } Xtrain=X0(1:420, ; d, W( C$ X+ a [8 f3 H& s0 u }- H; q
Xtest=X0(421:600, ;
& B5 ?7 h% V! p. B8 i a label0=label1(r,:);
, Q& U) }: g: X" L3 b labeltrain=label0(1:420,:);
3 O8 J9 N8 G( x1 B: r labeltest=label0(421:600,:);
9 Y$ ?1 c; E8 _. v TResult=KNN(Xtrain,Xtest,labeltrain);
; g( r$ M( Q0 [6 M rnum=0;
3 w B& C/ M- |* x/ r% K a for i=1:180& @( i7 c, p7 t- ?6 w( k
if TResult(i)==labeltest(i)
8 N* h* r+ c3 ^ rnum=rnum+1;8 |& V8 b0 v5 X* |4 y( Z
end5 I8 t/ p, r j8 E
end9 _) W7 ?9 h' I& S& Y* J# C
' }: _$ r% L8 p3 @3 c2 \
set(handles.edit1,'String','loading completed');
{# g7 v2 c' L6 \( b- k. V set(handles.edit2,'String',num2str(rnum/180));
) w5 u( l. m: |- O" w
0 E- a/ R. _ U' Xfunction result=KNN(train,test,trainlabel)
: ], _) R. G% g. R) a$ i: Sk=2;; [6 c+ F. e7 d- k. d+ W- D* f
testlength=length(test(:,1));
& F& ?, ~) T: y4 a# Xtrainlength=length(train(:,1));, S5 _! m6 w; P
for i=1:testlength3 M3 G6 n$ s+ n5 O0 R# O- n7 q5 ~
dist=zeros(trainlength,1);
& w1 x2 n& U' Z2 I1 N* Z+ T for j=1:trainlength
) U/ b6 f c4 S dist(j)=distance(test(i,:),train(j,:),1);* H% x/ O( x0 A
end
+ o# |2 U' a; A1 F( C [Y,I]=sort(dist,1);
6 Y% K* R/ {( u) f k=min(k,length(Y));
8 t4 D+ b& ~! S* N labels=trainlabel(I);* @/ V r* b$ v0 ~8 e1 y" B
result(i)=mode(labels(1:k));" v+ S& e6 ~( N, k( A
end |
|