Fisher线性判别算法原理及实现 MATLAB

Fisher线性判别算法原理及实现 MATLAB

一、Fisher判别器原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码实现

clc;
close all;
clear;
%% 生成数据
rng(2020);   %指定一个种子
mu1 = [0 3];
sigma1 = [0.5 0; 0 0.5];
data1 = mvnrnd(mu1,sigma1,300); %生成一个300*2的矩阵,每一列的数据分别以03为均值,标准差都为0.5rng(2021);  %指定一个种子
mu2 = [6 7];
sigma2 = [0.5 0; 0 0.5];
data2 = mvnrnd(mu2,sigma2,300); %生成一个300*2的矩阵,每一列的数据分别以67为均值,标准差都为0.5% rng(2022);  %指定一个种子
% mu3 = [5 -5];
% sigma3 = [0.5 0; 
%          0 0.5];
% data3 = mvnrnd(mu3,sigma3,300); %生成一个300*2的矩阵,每一列的数据分别以5-5为均值,标准差都为0.5%% 
figure(1),plot(data1(:,1),data1(:,2),'r+');hold on;
plot(data2(:,1),data2(:,2),'b*');hold on;
% figure(3),plot(data3(:,1),data3(:,2),'m^');hold on;%%
mu_1=mean(data1,1);  %求data1数据集的均值 mean是求每一列的均值
mu_2=mean(data2,1);  %求data2数据集的均值 mean是求每一列的均值
tmp=data1-repmat(mu_1,[size(data1,1),1]); %size(data1,1)返回data1第一维的大小 repmat将mu_1矩阵当成一个数,然后按后面的向量排列
S1=tmp'*tmp;   %计算出S1 下面的操作是一样的
tmp=data2-repmat(mu_2,[size(data2,1),1]);
S2=tmp'*tmp;
Sw=S1+S2;
w_star=Sw\(mu_1-mu_2)';  %这边直接用结论 注意这里的mu_1 mu_2是行向量,而PPT上的为列向量,所以多了个转置,实际上是一样的%% Plot w_star
Data=[data1;data2]; %将两个数据集合并成一个数据集
[xmin,ymin]=min(Data,[],1); %返回每一列的最小值
[xmax,ymax]=max(Data,[],1); %返回每一列的最大值
X=xmin:0.1:xmax; %采样
k=w_star(2)/(w_star(1)+eps);%求出判别函数的斜率
plot(X,k*X-4,'k--'); %画出判别函数,-4只是上下平移,并不会影响到判别函数的方向,这里只是为了不让它穿过样本%%
w_star=-w_star;  %反向
y1=data1*w_star; %计算data1中每一个样本的投影
y2=data2*w_star; %计算data2中每一个样本的投影
figure(2),plot(y1,zeros(length(y1)),'r+');hold on;
plot(y2,zeros(length(y2)),'b*');hold on; %横坐标是它们的投影,纵坐标取零是便于在一维中比较,可以发现两类样本分开了%% Sw-1Sb特征值分解
Sb=(mu_1-mu_2)'*(mu_1-mu_2); %注意这里的mu_1 mu_2是行向量,而PPT上的为列向量,所以多了个转置,实际上是一样的
Tmp=Sw\Sb; % Jf矩阵
[V,D]=eig(Tmp); %V储存特征向量,D储存特征值,D是个对角阵,特征值储存在对角线上
D=diag(D); %提取出特征值行向量
[~,ind]=max(D);%最大特征值的序号
v=V(:,ind); %提取出与最大特征值对应的特征向量
k1=v(2)/(v(1)+eps);
figure(3),plot(data1(:,1),data1(:,2),'r+');hold on;
plot(data2(:,1),data2(:,2),'b*');hold on;
plot(X,k*X-4,'k--');hold on;
plot(X,k1*X-6,'m--'); %可以发现与第一种方法得到的结果是一样的%% G(x)=w'x+w0
mu_y1=mean(y1); %计算data1数据投影的平均值
mu_y2=mean(y2); %计算data2数据投影的平均值
d=(mu_y1+mu_y2)/2; %d就是阈值
w0=-d;
figure(4),plot(data1(:,1),data1(:,2),'r+');hold on;
plot(data2(:,1),data2(:,2),'b*');hold on;
plot(X,k*X-4,'k--');hold on;
Y=(-w_star(1)*X-w0)/(w_star(2));%G(x)=0解出y即可 注意x向量的第一个元素是横坐标,第二个元素是纵坐标
plot(X,Y,'m-');
axis equal;

三、实验结果

Figure 1:
在这里插入图片描述

Figure 2:
在这里插入图片描述
Figure 3:
在这里插入图片描述
Figure 4:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大话设计模式之外观模式

年年作品展,岁岁不相同,鹅黄新绿涟漪泛起思想的火花却不尽相同。十期的作品展,从13年3月20号開始到完美落幕,时至今日,她已经在我的记忆中成为过去。这朵小小的浪花激起的涟漪渐渐褪去,或许已没有或许&…

HK算法原理及MATLAB实现

HK算法原理及MATLAB实现 一、编程原理 说明: 1、绿色框图中,当alpha取为最优权向量时,会使 取为最小值。arg的意思是当后面那个函数满足时,取出它的自变量的值。 2、注意后面那个式子是对b求偏导 3、e(t)大于0时,下…

python列反过来_xlwings 教程:使用Python更快速地处理Excel

Excel在当今商业中的使用非常普遍。在Dataquest,出于很多原因,我们通常推荐使用代码处理数据,并且我们的许多数据科学课程的目标是教授数据分析和数据科学的高效编码。但是,无论您多么喜欢使用Python,在一天结束时&…

多类线性分类器算法原理及代码实现 MATLAB

多类线性分类器算法原理及代码实现 MATLAB 一、算法原理 下面举例说明为何蓝圈部分在case2中是确定的而在case1中不确定: 二、代码实现 1、HK函数 function [] HK(w1_data,w2_data) %w1_data为第一类数据集 w2_data为第二类数据集 %此函数的作用为用HK算法对输…

(转) C#如何使用异步编程

怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法。委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用。 异步有三种模式 等待模式,在…

javascript 的 ~ 操作符作用

2019独角兽企业重金招聘Python工程师标准>>> "~" operator in javascript. For anyone else who also didnt know what it does: it converts -1 to 0,可以节省用来比较-1的情况,如 if (~event.origin.indexOf(http://yoursite.com…

驻定相位原理(POSP)以及线性调频信号的频谱

最近看论文遇到了驻定相位原理,问老师直接给了我一本书让我看,看半天只有一段…不是这个方向的,半路出家做毕业设计需要用到这个定理,有错误的话请不吝赐教。 一、驻定相位原理 在数字信号处理中,经常需要将一个时域…

vue怎么合并两个视频_【软件分享】视频分割合并软件哪款好用呢?怎么剪切合并视频?...

现在有很多小伙伴都喜欢喜欢自己拍视频上传到各大视频平台,有时候会遇到关于视频剪辑方面的难题,比如说,视频怎么剪切?怎么将两段小视频合并成一个呢?这些都是一些比较常常遇到的问题,今天小编就给大家介绍…

怎样根据字段域查找到其在数据库中关系与属性

Infor SyteLine ERP中,很多时候需要做维护,我们需要从打开的window窗口的form中某一个输入Textbox域或是DropDownList域,去找到它是绑定了数据库中的哪一张表,哪一个字段的? 其相关的关系或是属性等。比如下面这个form…

【手势交互】9. PS Move

索尼研发体感控制技术已有10年,在过去那么多年里。尝试了3D摄像头、超声波和电磁感应等各种技术。最后还是觉得眼下的MOVE所使用的技术最为合适。PS Move是索尼于2010年9月份推出。用来让PS3主机具备动态感应功能的控制器。他利用动态控制器(手柄&#x…

多普勒效应及多普勒频移的简单推导

多普勒效应及多普勒频移的简单推导 fd≡fR−fT(1)f_d\equiv f_R-f_T \tag{1} fd​≡fR​−fT​(1)   式中,fdf_dfd​表示多普勒频移,fRf_RfR​表示目标回波的频率(Hz),fTf_TfT​表示发射信号的频率(Hz)。 多普勒频移…

amazons3 检查连接是否_钢筋机械连接接头如何检查是否合格?抽检数量、合格率是多少?...

一、钢筋机械连接介绍1、钢筋机械连接在连接区段内接头率的规定(35d):★接头宜设置在结构构件中受拉应力较小的部位,当需要在高应力部位设置时,在同一连接区段内Ⅲ接头的接头率不应大于25%,Ⅱ接头率不应大于50%,Ⅰ接头…

学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)

上一节我们讨论了 none 和 host 类型的容器网络,本节学习应用最广泛也是默认的 bridge 网络。 Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。 当前 docker0 上没有任何其他网络设备…

驻定相位原理(POSP)的简单应用

在SAR雷达成像中,POSP是相当基础重要的一个定理,一般在对回波做傅里叶变换时经常用到,一般在论文的开头就会出现。   下面简单复习一下POSP的步骤: 1:列出傅里叶变换表达式 2:对相位在驻定相位点处泰勒展…

vs2019 更新安装错误_本月Windows 10累积更新再出BUG:安装时跳出错误代码

在本月的补丁星期二活动日中,微软为所有支持的 Windows 10 系统带来了新一轮的累积更新。和以往一样,本次发布的 KB4566782 和 KB4565351 两个累积更新又出现了新的 BUG。根据用户反馈,Windows10 Version 2004/1909/1903 功能更新安装这些累积…

【python】画一个爱心

python画爱心 做二级python题目的时候,遇到了一个画爱心编程题,感觉挺有趣的,把它搬到这里来。 from turtle import * def curvemove():for i in range(200):right(1)forward(1) setup(600,600,400,400) hideturtle() pencolor(black) fill…

上天入海又怎样?阿里的运动达人纷纷表示不服

6月23日是国际奥林匹克日。奥林匹克精神其实是一个普遍的概念。所有能使人变得更好的原则,都包容它明亮的光环里。2017年1月19日,阿里巴巴和国际奥委会在洛桑共同宣布top合作伙伴计划,开启了为期12年的阿里奥运之旅。阿里将给世界带来“云上的…

cordova 更改app版本_Cordova打包Android应用流程(MAC)

扩展阅读基于Cordova批量打场景包(MAC)APP包名称命名规则1. 安装cordova打包应用brew install cordova2. 创建cordova项目执行命令 create app com.githen.app 测试app * app 项目的目录名称 ( 下面所有目录均以此目录为根目录说明 ) * com.githen.app 项目包名称 * 测试app 项…

深搜——数字划分问题

TYVJ 1271 零式求和 描述 请考虑一个由1到N(N3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。现在请在数列中插入“”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1-23),来将每一对数字…

正交解调原理

雷达系统发射和接收的脉冲是实信号。本文解释了如何通过正交解调对接收信号进行频带搬移,从而获得一个复的基带信号。  一般具有较高载频的低频调制实信号表示如下: x(τ)cos[2πf0τϕ(τ)](1)x(\tau)cos[2\pi f_0\tau\phi(\tau)]\tag{1} x(τ)cos[2π…