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

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

?? fourier.cpp

?? 一個Fourier變換的小程序;算法簡單實用。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	int wp;
	int hp;//2的指數
	
	w=1;	//賦初值
	h=1;
	wp=0;
	hp=0;

	while(w<lWidth)//計算進行傅立葉變換的寬度和高度(2的整數次方)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}
	//
	float tempD;		//臨時變量
	if(flag==2)			//對行作fft
	{
		memset(FDresult,0,sizeof(complex<float>)*w*lHeight);	//設置為0
		//
		complex<float>*TD=new complex<float>[w];		//分配內存存儲時域數據
		//
		for(i=0;i<lHeight;i++)//行
		{
			memset(TD,0,sizeof(complex<float>)*w);	//賦值0
			//轉移一行數據到TD
			for(j=0;j<lWidth;j++)//列
			{
				tempD=TDdata[i*lWidth+j];
				TD[j]=complex<float>(tempD,0);
			}
			//FFT
			FFT(TD,wp);
			//
			for(j=0;j<w;j++)
			{
				FDresult[i*w+j]=TD[j];
			}
		}		
		//
		delete[]TD;
	}
	else if(flag==1)	//對列做fft
	{
		memset(FDresult,0,sizeof(complex<float>)*h*lWidth);	//設置為0
		//
		complex<float>*TD=new complex<float>[h];	//分配內存存儲時域數據
		//
		for(i=0;i<lWidth;i++)
		{
			memset(TD,0,sizeof(complex<float>)*h);		//賦值0
			//將一列數據存到TD中
			for(j=0;j<lHeight;j++)
			{
				tempD=TDdata[j*lWidth+i];
				TD[j]=complex<float>(tempD,0);
			}
			//對TD做FFT
			FFT(TD,hp);
			//將數據保存到FDresult
			for(j=0;j<h;j++)
			{
				FDresult[j*lWidth+i]=TD[j];
			}		
		}
		//
		delete[]TD;
	}
	return true;
}
/*******************************************************************
 *	函數名:
 *		Fourier2()
 *	參數:
 *		TDdata			時域數據
 *		lWidth			數據寬度
 *		lHeight			數據高度
 *		FDresult		頻域結果
 *		flag			=1,對列;=2對行
 *	說明:
 *		二維float數據中的一維fourier變換
 *******************************************************************/
BOOL CFourier::Fourier2(float*TDdata,long lWidth,long lHeight,complex<float>*FDresult,int flag)
{
	long i;
	long j;//循環變量

	int wp;
	int hp;//2的指數
	
	w=1;	//賦初值
	h=1;
	wp=0;
	hp=0;

	while(w<lWidth)//計算進行傅立葉變換的寬度和高度(2的整數次方)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}

	if(flag==2)			//對行作fft
	{
		memset(FDresult,0,sizeof(complex<float>)*w*lHeight);	//設置為0
		//
		complex<float>*TD=new complex<float>[w];		//分配內存存儲時域數據
		//
		for(i=0;i<lHeight;i++)//行
		{
			memset(TD,0,sizeof(complex<float>)*w);	//賦值0
			//轉移一行數據到TD
			for(j=0;j<lWidth;j++)//列
			{
				TD[j]=complex<float>(TDdata[i*lWidth+j],0);
			}
			//FFT
			FFT(TD,wp);
			//
			for(j=0;j<w;j++)
			{
				FDresult[i*w+j]=TD[j];
			}
		}		
		//
		delete[]TD;
	}
	else if(flag==1)	//對列做fft
	{
		memset(FDresult,0,sizeof(complex<float>)*h*lWidth);	//設置為0
		//
		complex<float>*TD=new complex<float>[h];	//分配內存存儲時域數據
		//
		for(i=0;i<lWidth;i++)
		{
			memset(TD,0,sizeof(complex<float>)*h);		//賦值0
			//將一列數據存到TD中
			for(j=0;j<lHeight;j++)
			{
				TD[j]=complex<float>(TDdata[j*lWidth+i],0);
			}
			//對TD做FFT
			FFT(TD,hp);
			//將數據保存到FDresult
			for(j=0;j<h;j++)
			{
				FDresult[j*lWidth+i]=TD[j];
			}		
		}
		//
		delete[]TD;
	}

	return true;

}
/*******************************************************************
 *	函數名:
 *		Fourier2()
 *	參數:
 *		TDdata			時域數據
 *		lWidth			數據寬度
 *		lHeight			數據高度
 *		FDresult		頻域結果
 *	說明:
 *		二維complex<float>數據fourier變換
 *******************************************************************/
BOOL CFourier::Fourier2(complex<float>*TDdata,long lWidth,long lHeight,complex<float>*FDresult)
{
	long i;
	long j;	//循環變量

	int wp;
	int hp;	//2的指數
	
	w=1;	//賦初值
	h=1;
	wp=0;
	hp=0;

	while(w<lWidth)//計算進行傅立葉變換的寬度和高度(2的整數次方)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}
	//
	memset(FDresult,0,sizeof(complex<float>)*w*h);	//設置為0

	//先對行作FFT
	complex<float>*TD=new complex<float>[w];	//分配內存存儲時域數據

	for(i=0;i<lHeight;i++)
	{
		memset(TD,0,sizeof(complex<float>)*w);	//賦值0	
		for(j=0;j<lWidth;j++)
		{
			TD[j]=TDdata[i*lWidth+j];
		}
		//FFT
		FFT(TD,wp);		//TD數據的FFT就保存在TD中,
		//
		for(j=0;j<w;j++)
		{
			FDresult[i*w+j] = TD[j];
		}
	}
	delete[] TD;
	//
	//再對列做FFT
	TD=new complex<float>[h];

	for(i=0;i<w;i++)
	{
		memset(TD,0,sizeof(complex<float>)*h);
		//
		for(j=0;j<h;j++)
		{
			TD[j]=FDresult[j*w+i];
		}
		//FFT
		FFT(TD,hp);
		//
		for(j=0;j<h;j++)
		{
			FDresult[j*w+i]=TD[j];
		}
	}
	delete[] TD;
	//
	return true;
}

/*******************************************************************
 *	函數名:
 *		Fourier2()
 *	參數:
 *		TDdata			時域數據
 *		lWidth			數據寬度
 *		lHeight			數據高度
 *		FDresult		頻域結果
 *		flag			=1,對列;=2對行
 *	說明:
 *		二維complex<float>數據中的一維fourier變換
 *******************************************************************/
BOOL CFourier::Fourier2(complex<float>*TDdata,long lWidth,long lHeight,complex<float>*FDresult,int flag)
{
	long i;
	long j;//循環變量

	int wp;
	int hp;//2的指數
	
	w=1;	//賦初值
	h=1;
	wp=0;
	hp=0;

	while(w<lWidth)//計算進行傅立葉變換的寬度和高度(2的整數次方)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}

	if(flag==2)			//對行作fft
	{
		memset(FDresult,0,sizeof(complex<float>)*w*lHeight);	//設置為0
		//
		complex<float>*TD=new complex<float>[w];	//分配內存存儲每行時域數據
		//對每行處理
		for(i=0;i<lHeight;i++)//行
		{
			memset(TD,0,sizeof(complex<float>)*w);	//賦值0
			//轉移一行數據到TD
			for(j=0;j<lWidth;j++)//列
			{
				TD[j]=TDdata[i*lWidth+j];
			}
			//FFT
			FFT(TD,wp);
			//
			for(j=0;j<w;j++)
			{
				FDresult[i*w+j]=TD[j];
			}
		}		
		delete[]TD;
	}
	else if(flag==1)	//對列做fft
	{
		memset(FDresult,0,sizeof(complex<float>)*h*lWidth);	//設置為0
		//
		complex<float>*TD=new complex<float>[h];	//分配內存存儲時域數據
		//
		for(i=0;i<lWidth;i++)
		{
			memset(TD,0,sizeof(complex<float>)*h);		//賦值0
			//將一列數據存到TD中
			for(j=0;j<lHeight;j++)
			{
				TD[j]=TDdata[j*lWidth+i];
			}
			//對TD做FFT
			FFT(TD,hp);
			//將數據保存到FDresult
			for(j=0;j<h;j++)
			{
				FDresult[j*lWidth+i]=TD[j];
			}		
		}
		delete[] TD;
	}
	return true;
}
/*******************************************************************
 *	函數名:
 *		InFourier2()
 *	參數:
 *		FDdata			頻域數據
 *		lWidth			數據寬度
 *		lHeight			數據高度
 *		TDresult		時域結果
 *	說明:
 *		二維complex<float>數據infourier變換
 *******************************************************************/
BOOL CFourier::InFourier2(complex<float>*FDdata,long lWidth,long lHeight,complex<float>*TDresult)
{
	long i;
	long j;	//循環變量

	int wp=0;
	int hp=0;	//指數

	w=1;h=1;	//賦初值

	while(w<lWidth)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}
	//
	memset(TDresult,0,sizeof(complex<float>)*w*h);	//設置為0

	//先對行作IFFT
	complex<float>*FD=new complex<float>[w];		//分配頻率緩存

	for(i=0;i<lHeight;i++)
	{
		memset(FD,0,sizeof(complex<float>)*w);	//賦值0	
		for(j=0;j<lWidth;j++)
		{
			FD[j]=FDdata[i*lWidth+j];
		}
		//IFFT
		IFFT(FD,wp);
		//
		for(j=0;j<w;j++)
		{
			TDresult[i*w+j] = FD[j];
		}
	}
	delete[] FD;
	//
	//再對列做FFT
	FD=new complex<float>[h];

	for(i=0;i<w;i++)
	{
		memset(FD,0,sizeof(complex<float>)*h);
		//
		for(j=0;j<h;j++)
		{
			FD[j]=TDresult[j*w+i];
		}
		//FFT
		IFFT(FD,hp);
		//
		for(j=0;j<h;j++)
		{
			TDresult[j*w+i]=FD[j];
		}
	}
	delete[] FD;
	//
	return true;
}

//結果直接保存在FDdata中
//要求lWidth和lHeight已經是2的冪次
BOOL CFourier::InFourier2(complex<float>*FDdata,long lWidth,long lHeight)
{
	long i;
	long j;		//循環變量

	int wp=0;
	int hp=0;	//指數

	w=1;h=1;	//賦初值

	while(w<lWidth)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}
	//
	//先對行作IFFT
	complex<float>*FD=new complex<float>[w];		//分配頻率緩存

	for(i=0;i<lHeight;i++)
	{
		memset(FD,0,sizeof(complex<float>)*w);	//賦值0	
		for(j=0;j<lWidth;j++)
		{
			FD[j]=FDdata[i*lWidth+j];
		}
		//IFFT
		IFFT(FD,wp);
		//
		for(j=0;j<w;j++)
		{
			FDdata[i*lWidth+j] = FD[j];
		}
	}
	delete[] FD;
	//
	//再對列做IFFT
	FD=new complex<float>[h];

	for(i=0;i<w;i++)
	{
		memset(FD,0,sizeof(complex<float>)*h);
		//
		for(j=0;j<h;j++)
		{
			FD[j]=FDdata[j*lWidth+i];
		}
		//FFT
		IFFT(FD,hp);
		//
		for(j=0;j<h;j++)
		{
			FDdata[j*lWidth+i]=FD[j];
		}
	}
	delete[] FD;
	//
	return true;
}

/*******************************************************************
 *	函數名:
 *		InFourier2()
 *	參數:
 *		FDdata			頻域數據
 *		lWidth			數據寬度
 *		lHeight			數據高度
 *		TDresult		時域結果
 *		flag			=1,對列;=2,對行;
 *	說明:
 *		二維complex<float>數據中的一維infourier變換
 *******************************************************************/
BOOL CFourier::InFourier2(complex<float>*FDdata,long lWidth,long lHeight,complex<float>*TDresult,int flag)
{
	long i;
	long j;	//循環變量

	int wp;
	int hp;	//2的指數
	
	w=1;	//賦初值
	h=1;
	wp=0;
	hp=0;

	while(w<lWidth)//計算進行傅立葉變換的寬度和高度(2的整數次方)
	{
		w*=2;
		wp++;
	}
	while(h<lHeight)
	{
		h*=2;
		hp++;
	}

	if(flag==2)			//對行作fft
	{
		memset(TDresult,0,sizeof(complex<float>)*w*lHeight);	//設置為0
		//
		complex<float>*FD=new complex<float>[w];	//分配內存存儲時域數據
		//
		for(i=0;i<lHeight;i++)
		{
			memset(FD,0,sizeof(complex<float>)*w);
			//
			for(j=0;j<lWidth;j++)
			{
				FD[j]=FDdata[i*lWidth+j];
			}
			//IFFT
			IFFT(FD,wp);
			//
			for(j=0;j<w;j++)
			{
				TDresult[i*w+j]=FD[j];
			}
		}
		delete[] FD;
	}
	else if(flag==1)	//對列做fft
	{
		memset(TDresult,0,sizeof(complex<float>)*h*lWidth);	//設置為0
		//
		complex<float>*FD=new complex<float>[h];	//分配內存存儲時域數據
		//
		for(i=0;i<lWidth;i++)
		{
			memset(FD,0,sizeof(complex<float>)*h);		//賦值0
			//將一列數據存到TD中
			for(j=0;j<lHeight;j++)
			{
				FD[j]=FDdata[j*lWidth+i];
			}
			//對TD做FFT
			IFFT(FD,hp);
			//將數據保存到FDresult
			for(j=0;j<h;j++)
			{
				TDresult[j*lWidth+i]=FD[j];
			}		
		}
		delete[] FD;
	}
	//
	return true;
}
//對二維數據在一維上的遷移
void CFourier::fftshift(complex<float>*Data,long lWidth,long lHeight,int flag)	
{
	long i;
	long j;
	complex<float> temp;
	if(flag==1)		//在列的方向做fft,雖然是二維的數據,不用擔心lHeight的奇偶性:偶數
	{
		complex<float>*change=new complex<float>[lWidth*lHeight];
		for(i=0;i<lHeight;i++)
		{
			for(j=0;j<lWidth;j++)
			{
				change[j*lHeight+i]=Data[i*lWidth+j];	//轉置一下
			}
		}
		for(i=0;i<lWidth;i++)
		{
			for(j=0;j<lHeight/2;j++)
			{
				temp=change[i*lHeight+j];
				change[i*lHeight+j]=change[i*lHeight+j+lHeight/2];
				change[i*lHeight+j+lHeight/2]=temp;
			}
		}
		for(i=0;i<lHeight;i++)							//轉置回來
		{
			for(j=0;j<lWidth;j++)
			{
				Data[i*lWidth+j]=change[j*lHeight+i];
			}
		}
		delete[]change;
	}
	else if(flag==2)	//對行,不用擔心lWidth的奇偶性:偶數
	{
		for(i=0;i<lHeight;i++)
		{
			for(j=0;j<lWidth/2;j++)
			{
				temp=Data[i*lWidth+j];
				Data[i*lWidth+j]=Data[i*lWidth+j+lWidth/2];
				Data[i*lWidth+j+lWidth/2]=temp;
			}
		}
	}
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产精品国产专区不片| 欧美理论电影在线| 久久精品亚洲精品国产欧美kt∨| 国产一区二区成人久久免费影院| www激情久久| 99视频一区二区| 亚洲美女偷拍久久| 欧美日韩第一区日日骚| 人人狠狠综合久久亚洲| 国产亚洲一本大道中文在线| hitomi一区二区三区精品| 一区二区三区精密机械公司| 欧美日韩一区二区三区在线看| 日本色综合中文字幕| 久久精品欧美一区二区三区麻豆| yourporn久久国产精品| 亚洲成人免费视频| 2023国产精华国产精品| 色哟哟在线观看一区二区三区| 一区二区国产视频| 日韩精品一区二区三区三区免费| 福利一区二区在线观看| 亚洲国产精品麻豆| 久久蜜桃av一区精品变态类天堂| 成人听书哪个软件好| 五月婷婷久久丁香| 欧美国产精品专区| 5566中文字幕一区二区电影| 国产成人免费视频一区| 亚洲午夜在线电影| 2023国产精品视频| 欧美日韩成人激情| 成人av免费观看| 日本vs亚洲vs韩国一区三区二区| 中文av一区特黄| 欧美一区二区视频网站| 91在线国产观看| 久久99国产精品久久99| 亚洲黄色录像片| 久久精品综合网| 91精品在线观看入口| 91老师国产黑色丝袜在线| 黑人精品欧美一区二区蜜桃| 夜色激情一区二区| 国产精品伦理在线| 日韩视频免费直播| 欧洲精品一区二区| jlzzjlzz欧美大全| 国产v综合v亚洲欧| 精品无人区卡一卡二卡三乱码免费卡| 一区二区在线看| 国产精品少妇自拍| 2021久久国产精品不只是精品| 欧美日韩视频不卡| 日本高清不卡视频| 91在线国内视频| av激情亚洲男人天堂| 国产盗摄女厕一区二区三区| 久久电影网电视剧免费观看| 亚洲在线视频免费观看| 亚洲色图一区二区| 国产精品美女久久久久久2018| 久久久高清一区二区三区| 日韩欧美成人午夜| 欧美一区二区三区男人的天堂| 欧美精品久久一区二区三区| 国产91露脸合集magnet| 国产专区欧美精品| 国产一区二区三区在线观看免费视频| 亚洲成人一区二区| 午夜伦理一区二区| 天天综合色天天综合| 亚洲成人午夜影院| 亚洲成av人片www| 亚洲国产精品影院| 亚洲一二三级电影| 亚洲一区在线观看视频| 亚洲综合色视频| 亚洲一区二区三区四区中文字幕| 亚洲人精品一区| 亚洲影院免费观看| 亚洲高清久久久| 亚洲国产日韩在线一区模特| 亚洲国产日韩av| 亚洲一区二区三区四区在线| 一区二区三区精品久久久| 香蕉成人伊视频在线观看| 日韩不卡在线观看日韩不卡视频| 青青草视频一区| 久久成人精品无人区| 国产一区二区免费视频| 成人午夜视频在线| 色综合色综合色综合| 欧美三区在线视频| 日韩精品资源二区在线| 欧美激情一区不卡| 夜夜嗨av一区二区三区四季av| 亚洲午夜在线观看视频在线| 美洲天堂一区二卡三卡四卡视频| 国内外成人在线视频| 国产91丝袜在线播放0| 91麻豆蜜桃一区二区三区| 欧美日韩性生活| 久久人人爽爽爽人久久久| 中文字幕色av一区二区三区| 亚洲国产日韩综合久久精品| 激情久久五月天| 91在线视频播放地址| 7777精品久久久大香线蕉| 久久精品视频一区二区| 亚洲免费观看高清完整| 麻豆91精品视频| av色综合久久天堂av综合| 欧美伦理视频网站| 中文字幕欧美三区| 日日夜夜精品视频免费| 国产99久久久国产精品| 欧美日韩五月天| 欧美国产国产综合| 日本不卡123| 99久久伊人网影院| 欧美一级在线观看| 亚洲精品国久久99热| 久久69国产一区二区蜜臀| 93久久精品日日躁夜夜躁欧美| 欧美成人伊人久久综合网| 综合在线观看色| 麻豆国产精品一区二区三区| 一本到高清视频免费精品| www国产亚洲精品久久麻豆| 亚洲综合偷拍欧美一区色| 国产剧情一区二区| 欧美男生操女生| 亚洲人成网站色在线观看| 国产一区二区三区电影在线观看| 欧美三级视频在线播放| 中文久久乱码一区二区| 精品在线播放免费| 欧美三级日韩在线| 亚洲欧美日韩久久| 盗摄精品av一区二区三区| 3d动漫精品啪啪1区2区免费| 亚洲蜜桃精久久久久久久| 国产成人av在线影院| 日韩精品一区二区三区三区免费| 亚洲制服丝袜在线| 91麻豆自制传媒国产之光| 欧美国产1区2区| 国产成人精品www牛牛影视| 精品久久久久av影院| 天堂影院一区二区| 欧美丝袜丝nylons| 亚洲美女少妇撒尿| 91在线观看成人| 中文字幕久久午夜不卡| 欧美日韩国产片| 亚洲狼人国产精品| 91丨porny丨中文| 亚洲欧洲精品一区二区三区不卡| 国产精品亚洲第一区在线暖暖韩国 | 亚洲影视在线播放| 91丨porny丨首页| 国产精品电影一区二区三区| 成人福利在线看| 国产精品美女久久久久久久网站| 国产精品1区2区| 国产午夜久久久久| 成人国产精品视频| 国产精品水嫩水嫩| 91免费精品国自产拍在线不卡| 国产精品国模大尺度视频| 99久久亚洲一区二区三区青草| 亚洲欧洲精品一区二区三区| 91亚洲精品乱码久久久久久蜜桃 | 欧美男同性恋视频网站| 亚洲成人先锋电影| 在线91免费看| 看国产成人h片视频| 久久综合国产精品| 成人动漫一区二区在线| 亚洲日本一区二区| 欧美午夜片在线看| 另类中文字幕网| 久久久国产精品午夜一区ai换脸| 成人激情综合网站| 亚洲欧美精品午睡沙发| 欧美四级电影网| 精品一区中文字幕| 国产精品三级av| 欧美三级中文字| 精品亚洲国产成人av制服丝袜| 国产视频不卡一区| 色婷婷激情久久| 麻豆精品一区二区综合av| 久久久不卡网国产精品二区| zzijzzij亚洲日本少妇熟睡| 午夜精品久久久久久不卡8050| 欧美成人a∨高清免费观看| 成人精品gif动图一区| 亚洲国产日产av|