简单的利用fisher准则函数获取最佳投影线的matlab程序

简单的利用fisher准则函数获取最佳投影线的matlab程序

ID:13726843

大小:114.00 KB

页数:5页

时间:2018-07-24

简单的利用fisher准则函数获取最佳投影线的matlab程序_第1页
简单的利用fisher准则函数获取最佳投影线的matlab程序_第2页
简单的利用fisher准则函数获取最佳投影线的matlab程序_第3页
简单的利用fisher准则函数获取最佳投影线的matlab程序_第4页
简单的利用fisher准则函数获取最佳投影线的matlab程序_第5页
资源描述:

《简单的利用fisher准则函数获取最佳投影线的matlab程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、简单的利用Fisher准则函数获取最佳投影线的Matlab程序     发现利用Fisher准则函数计算最佳投影方向的公式好像很简单,就写这个吧!     这个Fisher法就是将高维空间中的样本投影到一维空间中,以降低复杂度。具体可以参见边肇祺、张学工著,清华大学出版社的《模式识别》(第二版)P87。     用这种方法时使用到了几个概念:     样本向量:样本向量是列向量,样本是d维空间中的点,因此它的位置可以用一个d维列向量表示;     各类样本均值向量:一类中所有样本向量的均值,也是d维列向量;     样本类内离散度矩阵:        

2、 x为样本向量,mi为Ci类的均值向量,Si为Ci类的类内离散度矩阵。     总类内离散度矩阵:Sw=S1+S2;     利用Lagrange乘子法可以求出使Fisher准则函数取极大值的向量:     这个向量指出了相对于Fisher准则函数最好的投影线方向。     虽然推导出这个结果,破费了些周折,但是结果的形式还是相对比较简单的,所以用Matlab程序实现它应该不麻烦。     最终的这个向量仅与总类内离散度矩阵和各类的均值向量有关,我们可以对类内离散度矩阵的表达式变一下形,使程序更容易写:     这样的变形也许在数学上的意义不大,但是可

3、以简化程序,使得类内离散度矩阵仅用一次矩阵乘法就可完成。     以下程序在Matlab7.0.1下编写。     在编写求解最佳投影线方向的代码之前,先得编写生成样本的函数,如下(为这个函数取名困扰了我很久,最后查字典得知样本是swatch,所以这个函数命名为createSwatch):functionswatch=createSwatch(xmin,xmax,ymin,ymax,num,varargin)xlen=abs(xmax-xmin);ylen=abs(ymax-ymin);ifnumel(varargin)>0&&isa(varargin

4、{1},'function_handle')   f=varargin{1};else   f=@rand;endswatch=[xlen*f(1,num)+min(xmax,xmin);...   ylen*f(1,num)+min(ymax,ymin)];     这次的实验是针对2D空间的样本,所以这个createSwatch函数用来产生2D空间的样本点。前四个参数xmin,xmax,ymin,ymax用来设定样本的横纵坐标的范围,第五个参数num用来指定产生的样本的个数,最后有一个可选的参数,用来传入一个函数句柄,用来自定义样本的分布率,默认使

5、用rand,均匀分布。     最后生成的num个样本以矩阵的形式返回,矩阵的一列代表一个样本,矩阵的第一行代表样本的横坐标,第二行代表样本的纵坐标。     然后是计算最佳投影线方向的函数:functionw=JF(c1,c2)%利用Fisher准则函数确定最佳投影方向%c1和c2分别为两类样本的样本矩阵%得到样本矩阵的尺寸信息%样本矩阵的行数代表样本的维数%样本矩阵的列数代表样本的个数size1=size(c1);size2=size(c2);%计算两类样本的均值向量m1=sum(c1,2)/size1(2);m2=sum(c2,2)/size2(

6、2);%样本向量减去均值向量c1=c1-m1(:,ones(1,size1(2)));c2=c2-m2(:,ones(1,size2(2)));%计算各类的类内离散度矩阵S1=c1*c1.';S2=c2*c2.';%计算总类内离散度矩阵Sw=S1+S2;%计算最佳投影方向向量w=Sw^-1*(m1-m2);%将向量长度变成1w=w/sqrt(sum(w.^2));     这个函数有两个参数c1,c2,分别是两个类别的样本矩阵;     返回值w是一个2维单位列向量,用来指出最佳投影线的方向。     最后编写一个测试用的脚本:clearall;%定义

7、两类样本的空间范围x1min=2;x1max=6;y1min=-4,y1max=0;x2min=6,x2max=10;y2min=2,y2max=6;%产生两类2D空间的样本c1=createSwatch(x1min,x1max,y1min,y1max,100);c2=createSwatch(x2min,x2max,y2min,y2max,80);%获取最佳投影方向w=JF(c1,c2);%计算将样本投影到最佳方向上以后的新坐标cm1=c1(1,:)*w(1)+c1(2,:)*w(2);cm2=c2(1,:)*w(1)+c2(2,:)*w(2);cc

8、1=[w(1)*cm1;w(2)*cm1];cc2=[w(1)*cm2;w(2)*cm2];%

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。