亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? a.cpp

?? 基于非負矩陣分解(NMF)的人臉特征提取算法
?? CPP
字號:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h>

#define maxiter 80000

//-------------------------------數據類型定義-----------------------
//矩陣結構定義

#define m 10304
#define n 1			//測試時為1,訓練時為7
#define k 5

#define k1 1
#define k2 1000000

double A[m][n];//原始矩陣
double W[m][k];//左乘矩陣
double H[k][n];//右乘矩陣

double H_[k][1];

//-------------------------------隨機矩陣生成函數-------------------

void matrixrand(int tag)
{
#define RANDMAX 1000000000//可以運行前設置,也可=A中數據的最大值+1~……
	int i,j;
	if(tag==0)//tag為0時為左乘矩陣的初始化
		for(i=0;i<m;i++)
			for(j=0;j<k;j++)
				W[i][j]=double(rand()%RANDMAX*1.0/RANDMAX);
	else
		if(tag==1)//tag為1時為右乘矩陣的初始化
			for(i=0;i<k;i++)
				for(j=0;j<n;j++)
					H[i][j]=double(rand()%RANDMAX*1.0/RANDMAX);
#undef RANDMAX
}

//-------------------------------信息讀入函數-----------------------

bool inforead(char *filename)
{
	int i,j;
	FILE *fp;
	fp=fopen(filename,"r");
	if(fp==NULL)
		return FALSE;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			fscanf(fp,"%lf",&A[j][i]);
	fclose(fp);
	return TRUE;
}

//-------------------------------正規化函數-------------------------

void normalization(void )
{
	int i,j;
	double max,min;
	for(i=0;i<m;i++)
	{
		max=min=A[i][0];
		for(j=0;j<n;j++)
		{
			if(A[i][j]<min)
				min=A[i][j];
			else
				if(max<A[i][j])
					max=A[i][j];
		}
		for(j=0;j<n;j++)
			A[i][j]=(A[i][j]-min)*1.0/(max-min);
	}
}

//-------------------------------歸一化H----------------------------

void NormalizeH(void )
{
	int i,j;
	double sum;
	//H歸一化
	for(i=0;i<k;i++)
	{
		sum=0;
		for(j=0;j<n;j++)
			sum+=H[i][j];
		for(j=0;j<n;j++)
			H[i][j]/=sum;
	}
}

//-------------------------------歸一化W----------------------------

void NormalizeW(void )
{
	int i,j;
	double sum;
	//W歸一化
	for(i=0;i<k;i++)
	{
		sum=0;
		for(j=0;j<m;j++)
			sum+=W[j][i];
		for(j=0;j<m;j++)
			W[j][i]/=sum;
	}
}

//-------------------------------計算H的迭代公式--------------------

void updateH(void )
{
	int i,j,con;
	double WT[k][m];//存儲W的轉置
	double Temp_1[k][n];//存儲WT與A的積
	double Temp_2[k][k];//存儲WT與W的積
	double Temp_3[k][n];//存儲Temp_2與H的積+1e-6
	double Temp_4[k][n];//存儲H.*Temp_1
	//轉置操作W
	for(i=0;i<k;i++)
		for(j=0;j<m;j++)
			WT[i][j]=W[j][i];
	//求WT與A的積
	for(i=0;i<k;i++)
		for(j=0;j<n;j++)
		{
			Temp_1[i][j]=0;
			for(con=0;con<m;con++)
				Temp_1[i][j]+=WT[i][con]*A[con][j];
		}
	//求WT與W的積
	for(i=0;i<k;i++)
		for(j=0;j<k;j++)
		{
			Temp_2[i][j]=0;
			for(con=0;con<m;con++)
				Temp_2[i][j]+=WT[i][con]*W[con][j];
		}
	//求Temp_2與H的積
	for(i=0;i<k;i++)
		for(j=0;j<n;j++)
		{
			Temp_3[i][j]=0;
			for(con=0;con<k;con++)
				Temp_3[i][j]+=Temp_2[i][con]*H[con][j];
			Temp_3[i][j]+=1e-9;
		}
	//求H.*Temp_1
	for(i=0;i<k;i++)
		for(j=0;j<n;j++)
			Temp_4[i][j]=H[i][j]*Temp_1[i][j];
	//求一趟循環后的H
	for(i=0;i<k;i++)
		for(j=0;j<n;j++)
			H[i][j]=Temp_4[i][j]/Temp_3[i][j];
}

//-------------------------------計算W的迭代公式--------------------

void updateW(void )
{
	int i,j,con;
	double HT[n][k];//存儲H的轉置
	double Temp_01[m][k];//存儲A與HT的積
	double Temp_02[k][k];//存儲H與HT的積
	double Temp_03[m][k];//存儲W與Temp_02的積+1e-6
	double Temp_04[m][k];//存儲W.*Temp_01
	//轉置操作H
	for(i=0;i<n;i++)
		for(j=0;j<k;j++)
			HT[i][j]=H[j][i];
	//求A與HT的積
	for(i=0;i<m;i++)
		for(j=0;j<k;j++)
		{
			Temp_01[i][j]=0;
			for(con=0;con<n;con++)
				Temp_01[i][j]+=A[i][con]*HT[con][j];
		}
	//求H與HT的積
	for(i=0;i<k;i++)
		for(j=0;j<k;j++)
		{
			Temp_02[i][j]=0;
			for(con=0;con<n;con++)
				Temp_02[i][j]+=H[i][con]*HT[con][j];
		}
	//求W與Temp_02的積
	for(i=0;i<m;i++)
		for(j=0;j<k;j++)
		{
			Temp_03[i][j]=0;
			for(con=0;con<k;con++)
				Temp_03[i][j]+=W[i][con]*Temp_02[con][j];
			Temp_03[i][j]+=1e-9;
		}
	//求W.*Temp_01
	for(i=0;i<m;i++)
		for(j=0;j<k;j++)
			Temp_04[i][j]=W[i][j]*Temp_01[i][j];
	//求一趟循環后的W
	for(i=0;i<m;i++)
		for(j=0;j<k;j++)
			W[i][j]=Temp_04[i][j]/Temp_03[i][j];
}

//-------------------------------原始算法函數-----------------------

void origNMF(void )
{
	int control=0;
	while(control<maxiter)
	{
		updateH();
		NormalizeH();//歸一化H
		updateW();
//		NormalizeW();//歸一化W
		control++;
	}
}

//-------------------------------判優函數---------------------------

double g_estimate(void )
{
	int i,con;
	double gestimate=0;
	double AWH[m][n];//存儲W*H所生成的矩陣
	for(i=0;i<m;i++)
	{
		AWH[i][0]=0;
		for(con=0;con<k;con++)
			AWH[i][0]+=W[i][con]*H[con][0];
	}
	for(i=0;i<m;i++)
		gestimate+=k1*pow((A[i][0]-AWH[i][0]),2);
	for(i=0;i<k;i++)
		gestimate+=k2*pow((H[i][0]-H_[i][0]),2);
	return gestimate;
}

//-------------------------------測試函數---------------------------

bool test(void )
{
	int min;
	double tempmin;
	double Cgestimate[10];
	/////////////////////////////////////////////////////////////////

	char Wname[10][10]={"W1.txt","W2.txt","W3.txt","W4.txt","W5.txt","W6.txt","W7.txt","W8.txt","W9.txt","W10.txt"};
	char hname[10][10]={"h1.txt","h2.txt","h3.txt","h4.txt","h5.txt","h6.txt","h7.txt","h8.txt","h9.txt","h10.txt"};

	/////////////////////////////////////////////////////////////////
	FILE *fp,*fpresult,*fptemp;
	if(!(fp=fopen("測試.txt","r")))
		return false;
	if(!(fpresult=fopen("結果.txt","w")))
		return false;

	for(int i=0;i<40;i++)
	{
		for(int j=0;j<m;j++)
			fscanf(fp,"%lf",&A[j][0]);
		int ii,jj;

		//計算對應的目標函數
		for(int testtemp=0;testtemp<10;testtemp++)
		{
			fptemp=fopen(Wname[testtemp],"r");
			for(ii=0;ii<m;ii++)
				for(jj=0;jj<k;jj++)
					fscanf(fptemp,"%lf",&W[ii][jj]);
			fclose(fptemp);

			fptemp=fopen(hname[testtemp],"r");
			for(ii=0;ii<k;ii++)
				fscanf(fptemp,"%lf",&H_[ii][0]);
			fclose(fptemp);

			matrixrand(1);//初始化H_矩陣

			for(j=0;j<200;j++)
				updateH();

			Cgestimate[testtemp]=g_estimate();
		}
		
		//找出Cgestimate中最小的值
		tempmin=Cgestimate[0];
		min=0;
		for(int t=1;t<10;t++)
			if(Cgestimate[t]<tempmin)
			{
				min=t;
				tempmin=Cgestimate[t];
			}

		fprintf(fpresult,"%d\n",min);
	}
	fclose(fp);
	fclose(fpresult);
	return true;
}

//-------------------------------主函數-----------------------------

void main()
{
//                  測試

	
	test();

	
/*//					訓練
	bool bo;
	bo=inforead("訓練2.txt");		//具體訓練時需要更改該處的名稱
	if(bo==FALSE)
		printf("文件打開失敗!!!\n");
	//矩陣的初始化
	matrixrand(0);
	matrixrand(1);

	origNMF();

	int i,j;
	FILE *fp;
	fp=fopen("W2.txt","w");			//具體訓練時需要更改該處的名稱
	for(i=0;i<m;i++)
	{
		for(j=0;j<k;j++)
			fprintf(fp,"%lf\t",W[i][j]);
		fprintf(fp,"\n");
	}
	fclose(fp);

	double Havg;
	fp=fopen("h2.txt","w");			//具體訓練時需要更改該處的名稱
	for(i=0;i<k;i++)
	{
		Havg=0;
		for(j=0;j<n;j++)
			Havg+=(H[i][j]*1.0/n);
		fprintf(fp,"%lf\n",Havg);
	}
	fclose(fp);
*/
	printf("OK!\n");
	getch();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品国产福利| 国产精品色在线观看| 国产欧美精品一区| 视频在线观看一区二区三区| 国产精品自在欧美一区| 欧美精品少妇一区二区三区| 国产精品久久久久四虎| 韩国理伦片一区二区三区在线播放| 91精品福利视频| 中文字幕精品一区二区精品绿巨人 | 中文字幕一区二区在线观看| 欧美aa在线视频| 日本高清视频一区二区| 久久青草欧美一区二区三区| 免费在线观看成人| 91精品福利在线一区二区三区| 亚洲视频免费在线| 成人国产精品免费网站| 久久先锋资源网| 国模一区二区三区白浆| 亚洲欧洲一区二区在线播放| 国产91精品精华液一区二区三区| 欧美一区二区黄色| 午夜国产精品一区| 欧美日韩午夜在线| 亚洲第一狼人社区| 欧美日韩中字一区| 亚洲亚洲人成综合网络| 91网上在线视频| 亚洲精品欧美激情| 欧美日韩视频在线一区二区| 亚洲综合视频在线| 欧美性视频一区二区三区| 一区二区三区产品免费精品久久75| 99在线热播精品免费| 国产精品久久免费看| 91蜜桃在线免费视频| 亚洲免费观看高清在线观看| 欧美在线综合视频| 天天综合网天天综合色| 欧美一区二区三区公司| 激情小说亚洲一区| 中文字幕精品一区| 色94色欧美sute亚洲线路一久| 一区二区三区不卡在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 国产综合久久久久影院| 欧美国产日本韩| 欧美中文字幕一区二区三区 | 欧美色爱综合网| 奇米影视一区二区三区小说| 精品国产一区二区亚洲人成毛片| 国产在线精品免费av| 欧美激情在线观看视频免费| 色天天综合久久久久综合片| 午夜欧美视频在线观看| 欧美精品一区二| 成人精品小蝌蚪| 亚洲h精品动漫在线观看| 欧美电视剧在线观看完整版| 国产99久久久国产精品免费看 | 99久久99久久精品免费看蜜桃| 一区二区三区欧美| 欧美电视剧在线看免费| 99久久国产综合精品女不卡| 日本美女一区二区三区视频| 日本一区二区在线不卡| 欧美日本一区二区三区四区| 国产成人免费视频网站高清观看视频 | 久久久电影一区二区三区| 91免费视频大全| 狠狠色丁香婷婷综合| 亚洲午夜日本在线观看| 久久久99精品久久| 欧美久久久一区| av高清久久久| 国产呦精品一区二区三区网站| 亚洲自拍偷拍麻豆| 国产99久久久国产精品免费看| 精品国产91久久久久久久妲己| 国产欧美精品一区二区色综合朱莉| 91麻豆产精品久久久久久| 日韩激情在线观看| 777午夜精品免费视频| 在线电影一区二区三区| 91精品国产91久久久久久最新毛片| 91精品国产综合久久精品| 欧美一区二区精品| 欧美成人一区二区| 国产无遮挡一区二区三区毛片日本| 国产欧美日韩一区二区三区在线观看| 欧美国产一区在线| 怡红院av一区二区三区| 亚洲国产精品自拍| 久久99热99| 成人高清在线视频| 在线视频一区二区三| 欧美乱妇15p| www国产成人| 亚洲视频精选在线| 日韩国产在线一| 国产一区二区三区黄视频 | 一区二区三区日韩| 免费在线观看成人| 岛国精品在线观看| 欧美在线观看一区| 精品少妇一区二区三区在线播放| 国产精品久久影院| 日韩福利视频网| 成人va在线观看| 777色狠狠一区二区三区| 日本一区二区不卡视频| 亚洲综合另类小说| 精品一区二区三区免费播放| 91麻豆免费看| 26uuu精品一区二区在线观看| 亚洲欧美日韩小说| 久久99国产精品久久| 在线视频欧美精品| 国产欧美日韩三级| 免费成人在线观看| 一本大道久久a久久精二百| 精品国产一区久久| 亚洲高清在线精品| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 99精品在线免费| 欧美va亚洲va香蕉在线| 亚洲图片你懂的| 国产尤物一区二区| 制服丝袜国产精品| 亚洲精品自拍动漫在线| 国产一区二区在线免费观看| 欧美亚洲国产一区在线观看网站| 欧美电视剧在线看免费| 亚洲午夜久久久久久久久久久 | 日韩精品影音先锋| 樱桃国产成人精品视频| 国产99久久久国产精品| 精品乱码亚洲一区二区不卡| 一区二区高清在线| 91在线小视频| 中文字幕av一区二区三区高 | 欧美电影免费观看高清完整版在| 亚洲精品免费在线播放| 成人av在线观| 久久精品免视看| 国产一区二区三区久久久| 精品少妇一区二区三区日产乱码 | 精品国产91亚洲一区二区三区婷婷 | 91精品福利在线一区二区三区 | 91色porny在线视频| 国产欧美综合色| 国产福利精品一区二区| 久久色在线视频| 久久草av在线| 日韩精品一区二区三区在线播放 | 国产麻豆成人传媒免费观看| 日韩视频123| 婷婷久久综合九色国产成人| 欧美日韩在线一区二区| 亚洲激情欧美激情| 91麻豆蜜桃一区二区三区| 国产精品成人免费在线| 成人av免费网站| 亚洲欧洲韩国日本视频| 不卡的电影网站| 国产精品日韩成人| 不卡的av在线| 亚洲黄色免费网站| 欧美性猛交xxxxxx富婆| 日本一道高清亚洲日美韩| 欧美二区在线观看| 免费一级片91| 久久精品夜色噜噜亚洲a∨| 成人综合婷婷国产精品久久| 国产精品国产三级国产aⅴ原创| jizzjizzjizz欧美| 亚洲狠狠丁香婷婷综合久久久| 欧洲另类一二三四区| 五月天精品一区二区三区| 日韩欧美123| 粉嫩久久99精品久久久久久夜| 亚洲欧洲国产日本综合| 欧美性生活久久| 老司机免费视频一区二区三区| 久久女同性恋中文字幕| 成人黄色大片在线观看| 亚洲欧美日韩电影| 欧美狂野另类xxxxoooo| 久久疯狂做爰流白浆xx| 国产精品视频在线看| 欧美性大战久久| 精品中文av资源站在线观看| 欧美国产亚洲另类动漫| 欧洲另类一二三四区| 韩国在线一区二区| 亚洲精品乱码久久久久久| 日韩视频一区二区三区在线播放 | 欧美伊人久久久久久久久影院 | 在线观看视频91|