当前位置:首页 > FCM模糊均值与改进算法
精心整理
//函数定义
double**DataRead(char*name,introw,intcol) {
double**p=newdouble*[row]; ifstreaminfile;
infile.open(name,ios::in); for(inti=0;i p[i]=newdouble[col]; for(intj=0;j infile>>p[i][j]; } } infile.close(); cout<<\成功读取数据文件:\ returnp; //释放内存 for(i=0;i 文档的保存 #include\voidDataSave(double**data,introw,intcol,char*name) { inti,j; ofstreamoutfile; //打开文件,输出数据 outfile.open(name,ios::out); outfile.setf(ios::fixed); outfile.precision(4); for(i=0;i outfile< outfile< outfile< 精心整理 精心整理 数据标准化处理 #include\ double**Standardize(double**data,introw,intcol) { inti,j; double*a=newdouble[col];//矩阵每列的最大值 double*b=newdouble[col];//矩阵每列的最小值 double*c=newdouble[row];//矩阵列元素 for(i=0;i //取出数据矩阵的各列元素 for(j=0;j cout<<\完成数据极差标准化处理!\\n\ delete[]a; delete[]b; delete[]c; returndata; } 生成样本虑属矩阵 精心整理 精心整理 #include\ voidInitialize(double**u,intk,introw) { inti,j; //初始化样本隶属度矩阵 srand(time(0)); for(i=0;i for(j=0;j u[i][j]=(double)rand()/RAND_MAX;//得到一个小于1的小数隶属度 }//rand()函数返回0和RAND_MAX之间的一个伪随机数 } } 数据归一化处理 #include\voidNormalize(double**u,intk,intcol) { inti,j; double*sum=newdouble[col]; //矩阵U的各列元素之和 for(j=0;j 迭代过程 #include\ #include\对模糊C均值进行迭代运算,并返回有效性评价函数的值 doubleUpdate(double**u,double**data,double**center,introw,intcol,intk) { inti,j,t; double**p=NULL; 精心整理 精心整理 for(i=0;i for(j=0;j //模糊指数取2 u[i][j]=pow(u[i][j],2); } } //根据隶属度矩阵计算聚类中心 p=MatrixMul(u,k,row,data,row,col); for(i=0;i //数据样本 for(j=0;j for(t=0;t b[t]=data[j][t];//暂存一样本 } 精心整理
共分享92篇相关文档