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

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

?? kmeans.cpp

?? 基于各種失真測度的c++程序。
?? CPP
字號:

//#include "stdafx.h"
//#include "ImageObj.h"
#include "Clustering.h"
#include "math.h"

/******************************************************************************
/*	Name:		LBGCluster
/*	Function:	Clustering input vectors using LBG algorithm
/*				Using Euclidean distance
/*	Parameter:	X -- Input vecters
/*				N -- Number of input vectors
/*				Y -- Clustering result
/*				M -- Number of clustering center
/*	Return:		0 -- Correct
/*				1 -- Error
/*
/******************************************************************************/
int LBGCluster(VQ_VECTOR *X, int N, VQ_CENTER *Y, int M)//x分配多大空間,為何不初始化指針?
{
	if(N<M)			 return -1;
	int		L=1000, m=1, nCenter, i, j, k;
	int		nDimension = X[0].nDimension;//X[0].nDimension仍就不確定?
	double  D0, D;
	struct  VQ_CENTERINFO
	{
		double*	  Data;//聚類的形心
		int		  nDimension;//矢量維數
		double*   SumData;//屬于此類的矢量各維之和
		int		  Num;//屬于此類的矢量個數
	};
	VQ_CENTERINFO	*Center = (VQ_CENTERINFO*)malloc(M*sizeof(VQ_CENTERINFO));
	if(Center == NULL)		return -1;
	double			*Distance = (double*)malloc(N*sizeof(double));
	if(Distance == NULL)	return -1;

	for( i=0; i<M; i++)
	{
		Center[i].nDimension = nDimension;
		Center[i].Data = (double*)malloc(sizeof(double)*nDimension);
		Center[i].SumData = (double*)malloc(sizeof(double)*nDimension);
		if( Center[i].Data == NULL || Center[i].SumData == NULL )
		{
			AfxMessageBox( "Memory used up!" );
			return -1;
		}
		for( j=0; j<nDimension; j++ )
		{
			Center[i].Data[j] = X[i*N/M].Data[j];//形成初始碼書
			Center[i].SumData[j] = 0;//?
		}
		Center[i].Num = 0;//?
	}

	D0=1;         D=1e+10;	
	while(m<L && fabs(D0-D)/D0>1e-5)//m=1 l=1000 平均失真?
	{
		for(i=0; i<M; i++)
		{
			for( j=0; j<nDimension; j++ )
				Center[i].SumData[j] = 0;
			Center[i].Num = 0;
		}
		D0 = D;			D = 0;		m++;//m控制迭代次數,不超過1000?
		for(i=0; i<N; i++)
		{
			Distance[i] = 1e+10;
			for(int j=0; j<M; j++)
			{
				double  Dist = 0;
				for( k=0; k<nDimension; k++ )
					Dist += (X[i].Data[k]-Center[j].Data[k])*(X[i].Data[k]-Center[j].Data[k]);
				if( Dist < Distance[i])
				{			
					nCenter = j;//?
					Distance[i] = Dist;
				}
			}
			X[i].nCluster = nCenter;//以上為確定每一個矢量屬于哪個胞腔。
			for( k=0; k<nDimension; k++ )
				Center[nCenter].SumData[k] += X[i].Data[k];
			Center[nCenter].Num++;
			D += Distance[i];//計算平均失真,為何不除以M
		}
		for(i=0; i<M; i++)
		{
			if(Center[i].Num != 0)//確定不是空胞腔
				for( k=0; k<nDimension; k++ )
					Center[i].Data[k] = Center[i].SumData[k]/Center[i].Num;//重新計算形心
			else
			{	
				int MaxNum=0;
				for( k=1; k<M; k++)
					MaxNum = Center[i].Num > Center[MaxNum].Num ? i: MaxNum;
				int   Num = Center[MaxNum].Num/2;
				for( k=0; k<nDimension; k++ )
					Center[MaxNum].SumData[k] = 0;
				Center[MaxNum].Num = 0;
				for(k=0; k<N; k++)
				{	
					if(X[k].nCluster != MaxNum)		continue;
					if(Center[i].Num < Num)
					{   
						X[k].nCluster = i;
						for( m=0; m<nDimension; m++)
							Center[i].SumData[m] += X[k].Data[m];
						Center[i].Num++;
					}
					else
					{
						for( m=0; m<nDimension; m++ )
							Center[MaxNum].SumData[m] += X[k].Data[m];
						Center[MaxNum].Num++;
					}
				}
				for( m=0; m<nDimension; m++ )
					Center[i].Data[m] = Center[i].SumData[m] / Center[i].Num;
				if(MaxNum < i)
					for( m=0; m<nDimension; m++ )
						Center[MaxNum].Data[m] = Center[MaxNum].SumData[m] / Center[MaxNum].Num;
			}
		}
	}
	for(i=0; i<M; i++)
	{
		for( m=0; m<nDimension; m++ )
			Y[i].Data[m] = Center[i].Data[m];
		Y[i].Num = Center[i].Num;
	}
	for( i=0; i<M; i++ )
	{
		free( Center[i].Data );
		free( Center[i].SumData );
	}
	free(Center);
	free(Distance);
	return 0;
}

/******************************************************************************
/*	Name:		DumpClusterData
/*	Function:	Dump clustering result to a text file for debugging
/*	Parameter:	FileName -- Dump text file name
/*				X -- Input vecters
/*				N -- Number of input vectors
/*				Y -- Clustering result
/*				M -- Number of clustering center
/*	Return:		0 -- Correct
/*				1 -- Error
/*
/******************************************************************************/
int DumpClusterData(CString FileName, VQ_VECTOR *X, int N, VQ_CENTER *Y, int M)
{
	int		i, j, k;
	int		nDimension = X[0].nDimension;
	FILE *fp = fopen(FileName, "wt");
	for( i=0; i<M; i++)
	{
		fprintf(fp, "Center%02d: ", i);
		for(  k=0; k<nDimension; k++ )
			fprintf( fp, "%5.1f ", Y[i].Data[k] );
		fprintf( fp, "Num=%03d\n", Y[i].Num);
		for( j=0; j<N; j++)
		{	if(X[j].nCluster != i)		continue;
			double Distance = 0;
			for( k=0; k<nDimension; k++)
				Distance += (X[j].Data[k]- Y[i].Data[k])*(X[j].Data[k]-Y[i].Data[k]);
			Distance = sqrt( Distance );
			for( k=0; k<nDimension; k++ )
				fprintf(fp, "  %03d  ", (int)X[j].Data[k] );
			fprintf( fp, " D=%5.1f\n", Distance);
		}
	}
	fclose(fp);
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区在线免费观看视频| 色综合久久久久久久| 五月天网站亚洲| 午夜国产精品影院在线观看| 亚洲一区中文日韩| 久久精品国产99久久6| 精品亚洲成a人| 丁香桃色午夜亚洲一区二区三区 | 亚洲视频一区在线| 日韩激情av在线| 处破女av一区二区| 欧美日韩一区在线观看| 欧美三级三级三级| 精品国内二区三区| 亚洲午夜免费视频| 成人黄色av网站在线| 911精品国产一区二区在线| 日韩小视频在线观看专区| 亚洲国产精品成人久久综合一区 | 日韩不卡一区二区| 99久久综合国产精品| 91成人国产精品| 国产性天天综合网| 日本不卡一区二区| 欧美日韩一本到| 一区二区三区在线免费播放| 国产麻豆成人精品| 欧美性高清videossexo| 欧美电影免费观看高清完整版在| 亚洲欧洲日产国码二区| 国产一区二区三区四区在线观看| 欧美美女一区二区三区| 国产欧美精品国产国产专区| 亚洲精品国产精华液| 在线免费视频一区二区| 亚洲欧美另类图片小说| av高清久久久| 国产精品婷婷午夜在线观看| 日产国产欧美视频一区精品| 日韩亚洲欧美高清| 久久国产麻豆精品| 日韩一区二区三区免费观看| 亚洲精品高清视频在线观看| 99精品久久免费看蜜臀剧情介绍| 久久九九久久九九| 91免费观看视频| 日韩激情一二三区| 国产欧美日韩不卡| 99国产欧美另类久久久精品| 久久你懂得1024| 色婷婷综合久久久久中文一区二区| 亚洲欧美经典视频| 日韩欧美的一区二区| 国产资源精品在线观看| 中文字幕一区二区视频| 91香蕉视频mp4| 人人超碰91尤物精品国产| 久久综合久久综合久久综合| 色成年激情久久综合| 亚洲最大色网站| 精品sm在线观看| 91小视频免费看| 国产精品羞羞答答xxdd| 日韩av电影一区| 亚洲国产精品一区二区www在线| 91久久精品午夜一区二区| 日韩国产在线一| 亚洲欧美日韩在线播放| 国产精品欧美久久久久无广告| 欧美日韩国产123区| 成人综合婷婷国产精品久久蜜臀| 亚洲视频每日更新| 日韩精品自拍偷拍| 欧美亚洲一区三区| 成人免费毛片a| 精油按摩中文字幕久久| 一区二区三区国产| 久久青草国产手机看片福利盒子 | 欧美区一区二区三区| 91玉足脚交白嫩脚丫在线播放| 国产精品一区一区| 成人视屏免费看| 99精品视频一区二区三区| 99久久777色| 99久久99久久综合| 北条麻妃国产九九精品视频| 国产v日产∨综合v精品视频| 国产一区二区三区香蕉| 另类调教123区 | 美女视频黄免费的久久 | 午夜精品久久久久久不卡8050| 亚洲资源在线观看| 天天影视涩香欲综合网| 亚洲激情图片qvod| 免费观看久久久4p| 激情欧美一区二区三区在线观看| 国产综合色产在线精品| 99久久久无码国产精品| 91性感美女视频| 欧美怡红院视频| 欧美大白屁股肥臀xxxxxx| 91精品综合久久久久久| 26uuu国产电影一区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 中文字幕欧美日本乱码一线二线 | 日韩理论片一区二区| 亚洲风情在线资源站| 日韩精品91亚洲二区在线观看| 狠狠色伊人亚洲综合成人| 国产精品1区二区.| 欧美性色aⅴ视频一区日韩精品| 欧美视频在线一区二区三区| 久久久亚洲午夜电影| 中文字幕av在线一区二区三区| 一区二区三区在线不卡| 日韩高清一区在线| 国产在线国偷精品免费看| 欧美亚洲动漫制服丝袜| 亚洲婷婷综合久久一本伊一区| 成人综合婷婷国产精品久久免费| 精品精品国产高清a毛片牛牛| 一区二区在线电影| 国产一区二区三区在线观看免费| 福利一区福利二区| 精品国精品国产| 国产在线播放一区| 久久久噜噜噜久噜久久综合| 夜夜爽夜夜爽精品视频| 91蜜桃视频在线| 一区二区三区高清不卡| 色偷偷88欧美精品久久久| 亚洲精品免费在线| 欧美日韩国产小视频在线观看| 亚洲成人资源网| 精品电影一区二区三区| 国产福利视频一区二区三区| 中文字幕亚洲在| 欧美日韩一区二区电影| 久久成人羞羞网站| 国产精品乱人伦中文| 色综合久久中文字幕| 免费观看一级欧美片| 国产区在线观看成人精品| 国产v日产∨综合v精品视频| 亚洲综合色视频| 日韩欧美成人激情| 久久先锋影音av| 一本大道综合伊人精品热热| 日韩1区2区3区| 亚洲人成网站精品片在线观看| 8v天堂国产在线一区二区| 成人精品国产福利| 久久精品国产澳门| 亚洲大片免费看| 亚洲综合免费观看高清完整版在线 | 亚洲猫色日本管| 久久夜色精品一区| 欧美日韩精品免费观看视频| 99久久精品国产网站| 激情五月婷婷综合网| 午夜精品久久久久久久久久久| 中文字幕在线不卡国产视频| 久久久亚洲精品一区二区三区 | 国产在线麻豆精品观看| 日本视频一区二区| 日韩精品免费视频人成| 国产伦精品一区二区三区在线观看| 樱桃国产成人精品视频| 自拍偷拍亚洲欧美日韩| 国产日产欧产精品推荐色| 久久综合久久综合亚洲| 久久久久97国产精华液好用吗| 欧美成人a在线| 精品久久一区二区三区| 精品国产91久久久久久久妲己 | 97aⅴ精品视频一二三区| 91小视频免费看| 欧美日韩一区成人| 91精品久久久久久蜜臀| 欧美岛国在线观看| 欧美国产欧美综合| 国产精品电影院| 亚洲国产一区视频| 国产一区中文字幕| 成人激情视频网站| 欧美群妇大交群中文字幕| 精品国产伦一区二区三区免费| 久久精品免费观看| 丁香婷婷综合五月| 欧美一区二区啪啪| 亚洲国产高清不卡| 丝袜亚洲另类欧美| 成人app网站| 日韩欧美一区二区视频| 国产精品久久影院| 久久99国产精品免费网站| 成人国产精品免费观看动漫| 岛国精品一区二区| 91在线porny国产在线看| 日本乱人伦aⅴ精品|