文档库 最新最全的文档下载
当前位置:文档库 › 基于Fisher准则线性分类器设计Matlab实现源代码

基于Fisher准则线性分类器设计Matlab实现源代码

x1=[0.2331 1.5207 0.6499 0.7757 1.0524 1.1974 ...
0.2908 0.2518 0.6682 0.5622 0.9023 0.1333 ...
-0.5431 0.9407 -0.2126 0.0507 -0.0810 0.7315 ...
0.3345 1.0650 -0.0247 0.1043 0.3122 0.6655 ...
0.5838 1.1653 1.2653 0.8137 -0.3399 0.5152 ...
0.7226 -0.2015 0.4070 -0.1717 -1.0573 -0.2099]';

y1=[2.3385 2.1946 1.6730 1.6365 1.7844 2.0155 ...
2.0681 2.1213 2.4797 1.5118 1.9692 1.8340 ...
1.8704 2.2948 1.7714 2.3939 1.5648 1.9329 ...
2.2027 2.4568 1.7523 1.6991 2.4883 1.7259 ...
2.0466 2.0226 2.3757 1.7987 2.0828 2.0798 ...
1.9449 2.3801 2.2373 2.1614 1.9235 2.2604]';

z1=[0.5338 0.8514 1.0831 0.4164 1.1176 0.5536 ...
0.6071 0.4439 0.4928 0.5901 1.0927 1.0756 ...
1.0072 0.4272 0.4353 0.9869 0.4841 1.0992 ...
1.0299 0.7127 1.0124 0.4576 0.8544 1.1275 ...
0.7705 0.4129 1.0085 0.7676 0.8418 0.8784 ...
0.9751 0.7840 0.4158 1.0315 0.7533 0.9548]'; %存储第一类点

x2=[1.4010 1.2301 2.0814 1.1655 1.3740 1.1829 ...
1.7632 1.9739 2.4152 2.5890 2.8472 1.9539 ...
1.2500 1.2864 1.2614 2.0071 2.1831 1.7909 ...
1.3322 1.1466 1.7087 1.5920 2.9353 1.4664 ...
2.9313 1.8349 1.8340 2.5096 2.7198 2.3148 ...
2.0353 2.6030 1.2327 2.1465 1.5673 2.9414]';

y2=[1.0298 0.9611 0.9154 1.4901 0.8200 0.9399 ...
1.1405 1.0678 0.8050 1.2889 1.4601 1.4334 ...
0.7091 1.2942 1.3744 0.9387 1.2266 1.1833 ...
0.8798 0.5592 0.5150 0.9983 0.9120 0.7126 ...
1.2833 1.1029 1.2680 0.7140 1.2446 1.3392 ...
1.1808 0.5503 1.4708 1.1435 0.7679 1.1288]';

z2=[0.6210 1.3656 0.5498 0.6708 0.8932 1.4342 ...
0.9508 0.7324 0.5784 1.4943 1.0915 0.7644 ...
1.2159 1.3049 1.1408 0.9398 0.6197 0.6603 ...
1.3928 1.4084 0.6909 0.8400 0.5381 1.3729 ...
0.7731 0.7319 1.3439 0.8142 0.9586 0.7379 ...
0.7548 0.7393 0.6739 0.8651 1.3699 1.1458]'; %存储第二类点
Pw1=0.6
Pw2=0.4
%求第一类点的均值向量m1
m1x=mean(x1(:)) %全部平均
m1y=mean(y1(:)) %全部平均
m1z=mean(z1(:)) %全部平均
m1=[m1x
m1y
m1z]
%求第二类点的均值向量m2
m2x=mean(x2(:)) %全部平均
m2y=mean(y2(:)) %全部平均
m2z=mean(z2(:)) %全部平均
m2=[m2x
m2y
m2z]
%求第一类类内离散矩阵S1
S1=zeros(3,3)
for i=1:36
S1=S1+([x1(i),y1(i),z1(i)]'-m1)*([x1(i),y1(i),z1(i)]'-m1)'
end
%求第二类类内离散矩阵S2
S2=zeros(3,3)
for i=1:36
S2=S2+([x2(i),y2(i),z2(i)]'-m2)*([x2(i),y2(i),z2

(i)]'-m2)'
end
%求总类内离散度矩阵Sw
Sw=S1+S2
%求向量W*
W=(inv(Sw))*(m1-m2)
%画出决策面
x=0:.1:2.5
y=0:.1:3
[X,Y]=meshgrid(x,y)
Z=(W(1)*X+W(2)*Y)/(-W(3))
mesh(X,Y,Z)
%保持
hold on
%透视决策面
hidden off
%求第一类样品的投影值均值
Y1=0
for i=1:36
Y1=Y1+W'*[x1(i),y1(i),z1(i)]'
end
M1=Y1/36
%求第二类样品的投影值均值
Y2=0
for i=1:36
Y2=Y2+W'*[x2(i),y2(i),z2(i)]'
end
M2=Y2/36
%选取阈值Y0
Y0=(M1+M2)/2+(log(Pw1)/log(Pw2))/70
%判定未知样品类别
X1=[1,1.5,0.6]'
if W'*X1>Y0
disp('点X1(1,1.5,0.6)属于第一类')
plot3(1,0.5,0.6,'or')
else
disp('点X1(1,1.5,0.6)属于第二类')
plot3(1,0.5,0.6,'ob')
end
X2=[1.2,1.0,0.55]'
if W'*X2>Y0
disp('点X2(1.2,1.0,0.55)属于第一类')
plot3(1.2,1.0,0.55,'or')
else
disp('点X2(1.2,1.0,0.55)属于第二类')
plot3(1.2,1.0,0.55,'ob')
end
X3=[2.0,0.9,0.68]'
if W'*X3>Y0
disp('点X3(2.0,0.9,0.68)属于第一类')
plot3(2.0,0.9,0.68,'or')
else
disp('点X3(2.0,0.9,0.68)属于第二类')
plot3(2.0,0.9,0.68,'ob')
end
X4=[1.2,1.5,0.89]'
if W'*X4>Y0
disp('点X4(1.2,1.5,0.89)属于第一类')
plot3(1.2,1.5,0.89,'or')
else
disp('点X4(1.2,1.5,0.89)属于第二类')
plot3(1.2,1.5,0.89,'ob')
end
X5=[0.23,2.33,1.43]'
if W'*X5>Y0
disp('点X5(0.23,2.33,1.43)属于第一类')
plot3(0.23,2.33,1.43,'or')
else
disp('点X5(0.23,2.33,1.43)属于第二类')
plot3(0.23,2.33,1.43,'ob')
end

相关文档
相关文档 最新文档