⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 111.txt

📁 该函数用于对图像进行傅立叶变换 采用蝶形算法进行快速付立叶变换该函数用于对图像进行傅立叶变换 采用蝶形算法进行快速付立叶变换
💻 TXT
字号:
void CMyDoc::FFT(double *TD1, double *TD2, double *FD1, double *FD2, int r)
{
    //该函数用于对图像进行傅立叶变换

	// 付立叶变换点数
	LONG count=1<<r;
	// 循环变量
	int		i,j,k;
	// 中间变量
	int		bfsize,p;
	// 角度
	double	angle;
	
	double *W1,*W2,*X11,*X12,*X21,*X22,*X1,*X2;
	
	// 分配运算所需存储器
	W1  = new double[count / 2];
    W2  = new double[count / 2];
	X11 = new double[count];
	X12 = new double[count];
	X21 = new double[count];
	X22 = new double[count];
	
	// 计算加权系数
	for(i = 0; i < count / 2; i++)
	{
		angle = -i * 3.1415926535 * 2 / count;
		W1[i]=double(cos(angle));
		W2[i]=double(sin(angle));
	}
	
	// 将时域点写入X1
	memcpy(X11, TD1, sizeof(double) * count);
	memcpy(X12, TD2, sizeof(double) * count);
	
	// 采用蝶形算法进行快速付立叶变换
	for(k = 0; k < r; k++)
	{
		for(j = 0; j < 1 << k; j++)
		{
			bfsize = 1 << (r-k);
			for(i = 0; i < bfsize / 2; i++)
			{
				p = j * bfsize;
				X21[i + p] = X11[i + p] + X11[i + p + bfsize / 2];
                X22[i + p] = X12[i + p] + X12[i + p + bfsize / 2];
				X21[i + p + bfsize / 2] = (X11[i + p] - X11[i + p + bfsize / 2]) * W1[i * (1<<k)]
					                      -(X12[i + p] - X12[i + p + bfsize / 2]) * W2[i * (1<<k)];
                X22[i + p + bfsize / 2] = (X11[i + p] - X11[i + p + bfsize / 2]) * W2[i * (1<<k)]
					                      +(X12[i + p] - X12[i + p + bfsize / 2]) * W1[i * (1<<k)];

			}
		}
		X1  = X11;
		X2  = X12;
		X11 = X21;
		X12 = X22;
		X21 = X1;
		X22 = X2;
	}
	
	// 重新排序
	for(j = 0; j < count; j++)
	{
		p = 0;
		for(i = 0; i < r; i++)
		{
			if (j&(1<<i))
			{
				p+=1<<(r-i-1);
			}
		}
		FD1[j]=X11[p];
		FD2[j]=X12[p];
	}
	
	// 释放内存
	delete W1;
	delete W2;
	delete X11;
	delete X12;
	delete X21;
	delete X22;
}
//17.对图像进行傅立叶变换函数代码完毕

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -