Fisher线性判别 模式识别 例题 您所在的位置:网站首页 样本离差矩阵怎么计算例题 Fisher线性判别 模式识别 例题

Fisher线性判别 模式识别 例题

2024-07-14 11:30| 来源: 网络整理| 查看: 265

**

Fisher线性判别

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

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 【例4-1】本程序为纸币100元A面与50元A 面的Fisher判别门限的程序,通过全局变量 dat自动从样本数据中将内容读入dat[10][4][8][8][60],dat为一个五维数组,第一维代表10 个样本,第二维代表人民币的币种,第三维代表旧版人民币的四个传感器数据和新

版人民币的四个传感器的数据,第四维代表八个传感器,第五维代表60次采样,程序将记录100元A面与50元A面各自的均值矢量、类内离差矩阵、类内离差总矩阵、投影特征向量和判别阈值。

//慰慰 double sw[32][8][8];//类内离差矩阵 double mj[32][8];//模式均值矢量 double sww[8][8];//类间离差矩阵 //fisher.cpp:Defines the entry point for the console application.// //rmbdis.cpp:Defines the entry point for the console appication.// #include"stdio.h" #include"math.h" #include"conio.h" #include #include using namespace std; #define PNUM 60 unsigned char dat[10][4][8][8][60]={ //0--样本1,1--样本1,...,8--样本9,9--样本10 //0--100,1--50,2--20,3--10 //O--A向,1--B向,2--C向,3--D向,4--新版A向,5-新版B向,6--新版C向,7-新版D向 //0--传感1,1--传感2,2--传感3,3--传感4,4--传感5,5--传感6,6--传感7,7--传感8 { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb00.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb01.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb02.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb03.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb04.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb06.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb07.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb08.txt" }, { #include"C:\\Users\\慰\\Desktop\\fisher线性判别\\样本\\rmb09.txt" } }; #define NUM 8 double Eueliden(double x[],double y[],int n) { double d; d=0.0; for(int i=0;i double d; d=0.0; for(int i=0;i double d; d=0.0; for(int i=0;i double d; d=0.0; for(int i=0;i double dx,dy; int i,j; dx=0.0; for(i=0;i dy+=matv1[i][j]*(x[j]-y[j]); } dx+=dy*(x[i]-y[i]); } return dx; } void GetMatV(double V[8][8],int k) { int i,j,m,n1,n2,n3; double xm[8],d,x,y; m=4*8*PNUM; for(i=0;i for(n2=0;n2 d+=(double)dat[k][1][n2][i][n3]; } } } d/=m; xm[i]=d; } for(i=0;i d=0; for(n1=0;n1 for(n3=0;n3 int n=8; double mat[8][16],d; int i,j,l,k; for(i=0;i if(j if(fabs(mat[i][k])>d){//选主元 d=fabs(mat[i][k]); j=i; } } if(j!=k){//交换 for(l=0;l mat[k][j]/=mat[k][k]; } for(i=0;i mat[i][j]-=mat[i][k]*mat[k][j]; } } } for(i=0;i matv1[i][j]=mat[i][j+n]; } } } void getswj(double mats[8][8],double mj[8],unsigned char data[8][60]) { int i,j,k; for(i=0;i mj[i]+=(double)data[i][k]; } mj[i]/=60.0; } for(i=0;i mats[i][j]=0; for(k=0;k int i,j,k,m; for(i=0;i for(k=0;k for(j=0;j for(k=0;k int i,j,k; double m[8]; for(i=0;i for(k=0;k for(j=0;j sb[i][j]+=(mj[k][i]-m[i])*(mj[k][j]-m[j]); } sb[i][j]/=32; } } } void getsw(double swj[32][8][8],double sw[8][8]) { int i,j,k; for(i=0;i sw[i][j]=0; for(k=0;k int i,j,k; for(i=0;i matc[i][j]=0; for(k=0;k int i,j; for(i=0;i matc[i][j]=mata[i][j]+matb[i][j]; } } } void MatDec(double mata[8][8],double matb[8][8],double matc[8][8]) { int i,j; for(i=0;i matc[i][j]=mata[i][j]-matb[i][j]; } } } void getst(double sw[8][8],double sb[8][8],double st[8][8]) { MatAdd(sw,sb,st); } double MatTrace(double mat[8][8]) { int i; double d=0.0; for(i=0;i int i,j; for(i=0;i outfile d+=x[i]*y[i]; } return d; } int main(int argc,char*argv[]) { double sw[32][8][8]; double mj[32][8]; double sww[8][8]; double sww1[8][8]; int i,j; /*get4sw(sw[0],mj[0],dat[0][0]); get4sw(sw[8],mj[8],da[0][1]); get4sw(sw[16],mj[16],dat[0][2]); get4sw(sw[24],mj[24],dat[0][3]);*/ char name[20]="sw100a.h"; for(i=0;i outfile for(j=0;j for(j=0;j for(j=0;j for(j=0;j d=0.0; for(j=0;j outfile for(j=0;j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有