• 大小: 25KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签:

资源简介

用于对遥感图像进行监督分类,贝叶斯分类器, 用于对遥感图像进行监督分类, 用于对遥感图像进行监督分类, 用于对遥感图像进行监督分类, 用于对遥感图像进行监督分类

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
const float PI=3.1415;
float train1[60][3]train2[60][3]train3[60][3]train4[60][3];          //存各类训练样本        
float m1[3]m2[3]m3[3]m4[3]c1[3][3]c2[3][3]c3[3][3]c4[3][3];     //各类均值向量及协方差矩阵
float p=0.25;                              //先验概率
float test[240][11];                       //检验样本  各列分别存放:分类前类别,行号,列号,一波段灰度,二波段灰度,三波段灰度,分类后类别
float a1a2a3a4;                         //公式中常数项;
float qqqq1qq2qq3qq4;                  //分类精度   
float k;                                   //kappa值
int q[4][4];                               //混淆矩阵
float a[4][4];                             //精度指标矩阵 各列分别为生产者精度 漏分误差
                                           //用户精度 错分误差

int main()
{   
void getdata1(char *filename);
void getdata2(char *filename);
    void compute(float train[60][3]float m[3]float c[3][3]float *a);
float identify(float m[3]float c[3][3]float afloat band1float band2float band3);
int classify(float p1float p2float p3float p4);
    void testing();
void accuracy(float p[4][4]);
void output(char *filename);
void output1(char *filename);
getdata1(“05training.txt“);         //存放的是训练样本三个波段的灰度值
getdata2(“05testing.txt“);          //检验样本行号 列号 类别代码 三个波段的灰度值
    compute(train1m1c1&a1);          //计算各类均值向量及协方差矩阵
compute(train2m2c2&a2);
compute(train3m3c3&a3);
compute(train4m4c4&a4);
    testing();                          //对检验样本分类
accuracy(a);
output(“05test-result.txt“);
output1(“05confusion-matrix.txt“);
return 0;
}


void getdata1(char *filename)
{   
ifstream infile(filenameios::in|ios::nocreate);   //把每类样本的灰度值依次存入对应的数组
    if(infile==0)
{  cout<<“open infile error!“<    exit(1);
}
    int ij;
for(i=0;i<60;i++)
for(j=0;j<3;j++)
infile>>train1[i][j];
    for(i=0;i<60;i++)
for(j=0;j<3;j++)
infile>>train2[i][j];
    for(i=0;i<60;i++)
for(j=0;j<3;j++)
infile>>train3[i][j];
    for(i=0;i<60;i++)
for(j=0;j<3;j++)
infile>>train4[i][j];
infile.close();
}

void getdata2(char *filename)

ifstream infile(filenameios::in|ios::nocreate);
    if(infile==0)

   cout<<“open infile error!“<    exit(1);
}
    int ij;
for(i=0;i<240;i++)      //检验样本的数量为240
for(j=0;j<6;j++)            //行、列号、类别代码、三个波段灰度值
infile>>test[i][j];
    infile.close();
}

void compute(float train[60][3]float m[3]float c[3][3]float *a)
{   
void gauss(int ffloat n[3][3]);    //求n  矩阵的逆阵声明 
int ij;
    for(i=0;i<3;i++)    m[i]=0;
for(i=0;i<3;i++)
{   
for(j=0;j<60;j++)
       m[i]+=train[j][i];
    m[i]=m[i]/60;
}
    float Train[3][60];         //转置矩阵
for(i=0;i<3;i++)
for(j=0;j<60;j++)
Train[i][j]=train[j][i];    
int k;
for(i=0;i<3;i++)                       //求协方差
   for(j=0;j<3;j++)
      {  c[i][j]=0;
             for(k=0;k<60;k++)
 c[i][j]+=((Train[i][k]-m[i])*(train[k][j

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        762  2008-08-02 11:38  贝叶斯分类\05confusion-matrix.txt

     文件      14899  2008-08-02 11:38  贝叶斯分类\05test-result.txt

     文件       6254  2007-04-30 21:22  贝叶斯分类\05testing.txt

     文件       3839  2007-04-29 17:11  贝叶斯分类\05training.txt

     文件      10323  2007-04-30 15:19  贝叶斯分类\classify.cpp

     文件       3425  2007-04-18 09:10  贝叶斯分类\classify.dsp

     文件      25600  2007-04-18 09:12  贝叶斯分类\classify.ncb

     文件          0  2007-04-18 09:11  贝叶斯分类\classify.plg

     文件       4264  2007-04-15 22:32  贝叶斯分类\test.dsp

     文件        514  2007-04-15 22:12  贝叶斯分类\test.dsw

     文件      66560  2008-08-02 11:39  贝叶斯分类\test.ncb

     文件      53760  2008-08-02 11:39  贝叶斯分类\test.opt

     文件        881  2008-08-02 11:38  贝叶斯分类\test.plg

     目录          0  2008-08-02 11:39  贝叶斯分类\Debug

     目录          0  2008-08-02 11:39  贝叶斯分类

----------- ---------  ---------- -----  ----

               191081                    15


评论

共有 条评论

相关资源