⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fisher.m

📁 目前模式识别中最为通用的简单的fisher分类器
💻 M
字号:
close all 
clear all

p1=0.6; % 第一类OMGA1数据的先验概率
p2=0.4; % 第二类OMGA2数据的先验概率

% OMGA1中数据点的三维坐标数据
x =[
    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];
y =[
    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];
z =[
    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];
% OMGA2中数据点的三维坐标数据   
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];

sample1=[x;y;z];
% OMGA1类样本 每一列为一组坐标(x,y,z)
sample2=[x2;y2;z2];
% OMGA2类样本 每一列为一组坐标(x2,y2,z2)

m1=mean(sample1,2); % OMGA1类样本值的均值向量
m2=mean(sample2,2); % OMGA2类样本值的均值向量

s1=zeros(size(sample1,1));
N1=length(x); % OMGA1类样本的长度
for k=1:N1
    s1=s1+(sample1(:,k)-m1)*(sample1(:,k)-m1)';
end 
%建立OMGA1类的样本类内离散度矩阵

s2=zeros(size(sample2,1));
N2=length(x2); % OMGA2类样本的长度
for j=1:N2
    s2=s2+(sample2(:,j)-m2)*(sample2(:,j)-m2)';
end 
%建立OMGA2类的样本类内离散度矩阵

% 总类内离散度矩阵
sw=p1*s1+p2*s2;

w=(sw)^(-1)*(m1-m2);
% 决策面的法向量,最佳投影方向
t=[-10:0.1:10];
xt=w(1)*t;
yt=w(2)*t;
zt=w(3)*t;
plot3(xt,yt,zt,'g');% 投影直线

hold on
mf1=w'*m1; % OMGA1类样本的均值
mf2=w'*m2; % OMGA1类样本的均值

w0=(mf1+mf2)/2-log(p1/p2)/(N1+N2-2);%最佳线性分界面的确定

for ii=1:size(sample1,2) %OMGA1类样本中所有的样本点的位置
    plot3(sample1(1,ii),sample1(2,ii),sample1(3,ii),'r*')
end
for ii=1:size(sample2,2) % OMGA2类样本中所有的样本点的位置
    plot3(sample2(1,ii),sample2(2,ii),sample2(3,ii),'b*')
end

Tb=[1.0000    1.2000    2.0000    1.2000    0.2300;
    1.5000    1.0000    0.9000    1.5000    2.3300;
    0.6000    0.5500    0.6800    0.8900    1.4300;];
% 待测数据,判断每一列数据即给定的坐标点属于哪一类

point=find_projection(w,Tb);
% 寻找待测样本点的投影
grid on
for ii=1:size(Tb,2)
    if w'*Tb(:,ii)>w0 % 将其判为OMGA1类并标出其位置及投影点
        plot3(Tb(1,ii),Tb(2,ii),Tb(3,ii),'g+') %用+来表示OMGA1类的位置
        plot3(point(1,ii),point(2,ii),point(3,ii),'go')%用o来表示OMGA1类的投影点
    else % 将其判为OMGA2类并标出其位置及投影点
        plot3(Tb(1,ii),Tb(2,ii),Tb(3,ii),'y+')%用+来表示OMGA2类的位置
        plot3(point(1,ii),point(2,ii),point(3,ii),'yo')%用o来表示OMGA2类的投影点
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -