|
这是按钮的回调函数,KNN是其中调用到的一个函数
- ]$ u! y% f( lfunction train_Callback(hObject, eventdata, handles)3 n' ]: A" I* a) C( R' j3 Z+ [# r
global fea1 a1 E0 x8 i: G/ E& v* c. s
global classifier
3 f7 M2 {7 e& w( C4 aglobal rnum0 D& d$ s9 k1 i4 B' W! i) }$ K; [
; f& A6 `/ F2 m, }+ |
load('feature.mat');8 y% n l$ ~- f- V1 ]1 ]! G
load('label1');, J' N1 Q3 Q) m7 i
if fea==[0 0 0 0 0] u* ?' @! @& F g# D9 |; ]! p' O
errordlg('Error!Please choose features','Error');# i$ b+ D$ T u; B7 s
elseif fea==[1 0 0 0 0]
* w) L+ B% C0 W- b feature=[ampmat];7 L5 I$ O" E* R0 k- M
elseif fea==[0 1 0 0 0]
# ~5 F% t# [8 P" O; y0 r1 E" c; Z feature=[energymat];6 g' c6 T$ L) G0 X5 z7 i
elseif fea==[0 0 1 0 0]; r# }8 y' ]" O+ o( P
feature=[entropymat];( `* I( E9 `" B2 `4 a
elseif fea==[0 0 0 1 0]
7 P2 j8 D D1 r' P3 |0 ] feature=[fremat];
4 F- [( o; k; L7 V elseif fea==[0 0 0 0 1]1 R8 c" E: ^8 U" B
feature=[mfccmat];' i$ D2 N h ?# }/ j
elseif fea==[1 1 0 0 0]
2 i/ c$ r( ` I x feature=[ampmat,energymat];
. B C1 k( N8 B! _ elseif fea==[1 0 1 0 0]
0 ^* ~ x9 R; G @- \ feature=[ampmat,entropymat];
( x9 t, a. T# e) D6 _( y7 Y elseif fea==[1 0 0 1 0]) T1 c& a* u ^$ ]) H- |
feature=[ampmat,fremat];
) Z+ v A4 _; W: ?2 S: s elseif fea==[1 0 0 0 1]
. y0 d9 o* L' z' n% `9 r6 H feature=[ampmat,mfccmat];
! R/ v+ ], [: [+ }/ z5 T elseif fea==[0 1 1 0 0]; H) U7 y2 h+ t
feature=[energymat,entropymat];
: Z) n* W) Q7 h1 i elseif fea==[0 1 0 1 0]
5 c3 e b5 {( R( g0 e3 U) c6 u: ^3 W) ` E feature=[energymat,fremat];
8 x, i2 t& L- f# ?; r1 s" g$ h elseif fea==[0 1 0 0 1]
5 a' Z+ p+ j: C) ]+ o u6 m feature=[energymat,mfccmat];
3 O4 O& n' u6 |* ~2 g+ j elseif fea==[0 0 1 1 0]
+ A# J# M# \. e5 f feature=[entropymat,fremat];. r' e3 }: k8 p
elseif fea==[0 0 1 0 1]4 G. P$ c& o7 _: @/ w) w2 v
feature=[entropymat,mfccmat];& m. H6 X9 B- n7 B
elseif fea==[0 0 0 1 1]" O# j ~7 E8 @7 V
feature=[fremat,mfccmat];
% P- |% {$ S: C. P/ w5 N j elseif fea==[1 1 1 0 0]
d8 d7 A6 s4 b z3 K: d; d$ ` feature=[ampmat,energymat,entropymat];; j2 ~* u6 [7 P! `, w @4 S1 {. j
elseif fea==[1 1 0 1 0]( @( K \! E: h) v- e
feature=[ampmat,energymat,fremat];7 ~/ N7 E5 X0 V4 F5 P: V
elseif fea==[1 1 0 0 1]
# X: M+ U9 M8 {5 m7 c feature=[ampmat,energymat,mfccmat];
H! C5 n- ^3 ^. `/ U5 a elseif fea==[1 0 1 1 0]
# ]) @/ L/ `0 {, |6 b feature=[ampmat,entropymat,fremat];
8 m$ [1 B8 b; ?0 u" h( f' z/ V3 K elseif fea==[1 0 1 0 1]
k. t7 [9 @ o4 z; w( G feature=[ampmat,entropymat,mfccmat];
$ G) s+ B+ o1 y" N elseif fea==[1 0 0 1 1]
3 k6 o K: ]8 h/ ?2 \3 T' ^ feature=[ampmat,fremat,mfccmat];0 T7 C" t& R, }7 T) ?
elseif fea==[0 1 1 1 0]: B" Q7 Y0 ^6 p0 E$ K3 o
feature=[energymat,entropymat,fremat];
5 k# f$ e/ B B3 @' A elseif fea==[0 1 1 0 1]. z. ?% ~3 ^$ f, L* m( p; ^, [
feature=[energymat,entropymat,mfccmat];# k1 ~; Z' A$ }4 A& X
elseif fea==[0 1 0 1 1], H5 [* a p0 D: ^2 T, n
feature=[energymat,fremat,mfccmat];/ P R7 @& T1 @4 R. d
elseif fea==[0 0 1 1 1]* k) P% Q. ?: M
feature=[entropymat,fremat,mfccmat];$ q) q* G4 w1 v6 w7 h
elseif fea==[1 1 1 1 0]
) S F) R; \& p3 X- |4 N feature=[ampmat,energymat,entropymat,fremat];
4 M- d8 x0 ^8 H+ | f elseif fea==[1 1 1 0 1]
) t9 \# J% M0 h+ U; m feature=[ampmat,energymat,entropymat,mfccmat];
# ]/ ^' D/ }0 E, A+ b) C elseif fea==[1 1 0 1 1]
2 A5 Z3 R# j7 C4 A, R; ? feature=[ampmat,energymat,fremat,mfccmat];) h0 G4 ^+ v* g9 p$ d6 i
elseif fea==[1 0 1 1 1]$ Q' t+ J& V: ?- k( F/ M
feature=[ampmat,entropymat,fremat,mfccmat]; d' w. Z7 u8 E1 v
elseif fea==[0 1 1 1 1]. a+ o/ o1 P* x3 }
feature=[energymat,entropymat,fremat,mfccmat];8 h2 `0 B- H- b7 f. v3 G
elseif fea==[1 1 1 1 1]
/ A, Y5 w( K' {! ~, b0 e; U: A feature=[ampmat,energymat,entropymat,fremat,mfccmat];4 W& \+ w- U2 r
else5 F! l. r1 e( V& ` I1 w
errordlg('Error!Please choose features','Error');; e: ~- q' c' q" q% t
end
# n U% a" C1 z3 v, Z" q, X
, j1 a2 d- Q6 Q * z/ Q* t9 ~1 s* O, w B* g0 R% _
r=randperm(600);
0 \) u& r% g$ o, r' t" o X0=feature(r, ;
6 V3 d" v- V! u Xtrain=X0(1:420, ;0 r0 s6 x( X. T) E. {& d4 K
Xtest=X0(421:600, ;. Y5 \ g c- i4 X9 U$ n5 C0 M
label0=label1(r,:); t" { ~* m3 ~% Z& r. N4 j4 r$ E
labeltrain=label0(1:420,:);( D9 g( P" l1 O' w! @' E7 i
labeltest=label0(421:600,:);
1 J0 l- J2 Q! A TResult=KNN(Xtrain,Xtest,labeltrain); K9 y0 z0 J1 D, o6 x% X
rnum=0;
! f& p2 k, B$ ~. C& l4 s1 `4 O for i=1:1809 H C B0 a0 h# u9 ?
if TResult(i)==labeltest(i)1 c# z @% X4 H. R
rnum=rnum+1;
\1 p' @% Y% f, O end$ g2 a0 p; x3 N6 ~
end
. @3 Y, Z e& z2 c1 y' X5 A( q
9 L, h3 i# F0 O) C4 g set(handles.edit1,'String','loading completed');) F4 ^' U2 t& w2 e( c! N% t
set(handles.edit2,'String',num2str(rnum/180));, S7 ~4 ~ T) h. Z
+ @' |- d1 u; N2 Gfunction result=KNN(train,test,trainlabel)$ y% p7 r* V* J
k=2;
: h& B2 g: M$ }: H/ k* W1 V" ]. Ytestlength=length(test(:,1));4 K2 P! G' Y+ W& ~1 i; {' X
trainlength=length(train(:,1));& C: m( R; |4 K H. z& Y! |
for i=1:testlength
* P) v: n& c5 \4 e/ d dist=zeros(trainlength,1); y( y; P+ D- i) R4 e7 w
for j=1:trainlength
+ k. ]! n9 e& a6 S dist(j)=distance(test(i,:),train(j,:),1);3 H+ W4 h5 Y# m: C
end
+ k9 ~- x- J4 O v/ o/ ~$ Q, H [Y,I]=sort(dist,1);# T" i2 W' {: ^1 w+ [ Q! l
k=min(k,length(Y));
* B7 i- V0 c# @7 R C labels=trainlabel(I);
0 A( F( s" t+ D5 f" f$ A5 R result(i)=mode(labels(1:k));% A# j z* V* S* C
end |
|