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

📄 fft.c

📁 电力系统FFT算法的改进
💻 C
字号:
void fushi_ampl_angl_to_real_imag(fushi_structure *pResult)
{
	union_long l;
	
	l.L = (long)(*pResult).ampl * REAL_3600[ (*pResult).angl ];
	l.L = l.L << 2;
	(*pResult).real = l.W[1];
	
	l.L = (long)(*pResult).ampl * IMAG_3600[ (*pResult).angl ];
	l.L = l.L << 2;
	(*pResult).imag = l.W[1];
}	

void fushi_real_imag_to_ampl_angl(fushi_structure *pResult)	
{
	union_long l;
	short i;	

	short absReal;
	short absImag;


	if ((*pResult).real < 0)
	{
		absReal = - (*pResult).real;

		if ((*pResult).imag < 0) 
		{
			absImag = - (*pResult).imag; 
	
			if (absReal < absImag)
			{
				l.W[1] = absReal;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absImag;
				l.L = absImag * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absImag;
				(*pResult).angl = 2700 - TABLE_ANGLE_45p0_2048[i];
			}
			else
			{
				l.W[1] = absImag;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absReal;
				l.L = absReal * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absReal;
				(*pResult).angl = 1800 + TABLE_ANGLE_45p0_2048[i];//7441
			}
		}
		
		else
		{
			absImag = (*pResult).imag;
			
			if (absReal < absImag)
			{
				l.W[1] = absReal;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absImag;
				l.L = absImag * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absImag;
				(*pResult).angl = 900 + TABLE_ANGLE_45p0_2048[i];
			}
			else
			{
				l.W[1] = absImag;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absReal;
				l.L = absReal * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absReal;
				(*pResult).angl = 1800 - TABLE_ANGLE_45p0_2048[i];//7441
			}
			
		}
		
	}	
	
	else
	{
		absReal = (*pResult).real;

		if ((*pResult).imag < 0) 
		{
			absImag = - (*pResult).imag; 
	
			if (absReal < absImag)
			{
				l.W[1] = absReal;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absImag;
				l.L = absImag * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absImag;
				(*pResult).angl = 2700 + TABLE_ANGLE_45p0_2048[i];
			}
		
			else
			{
				l.W[1] = absImag;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absReal;
				l.L = absReal * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absReal;
				(*pResult).angl = 3600 - TABLE_ANGLE_45p0_2048[i];//7441
				if ( (*pResult).angl == 3600 ) 
				{
					(*pResult).angl = 0;
				}
			}
		}
		
		else
		{
			absImag = (*pResult).imag;
			
			if (absReal < absImag)
			{
				l.W[1] = absReal;
				l.W[0] = 0;
				l.L = l.L >> 5; 
				i = l.L / absImag;
				l.L = absImag * TABLE_AMPL_SUB_MAX_2048[i];
				(*pResult).ampl = l.W[1] + absImag;
				(*pResult).angl = 900 - TABLE_ANGLE_45p0_2048[i];
			}
			else
			{
				l.W[1] = absImag;
				l.W[0] = 0;
				l.L = l.L >> 5; 
	
				if( absReal == 0 )
				{
					(*pResult).ampl = 0;
					(*pResult).angl = 0;
				}
				else
				{
					i = l.L / absReal;
					l.L = absReal * TABLE_AMPL_SUB_MAX_2048[i];
					(*pResult).ampl = l.W[1] + absReal;
					(*pResult).angl = TABLE_ANGLE_45p0_2048[i];//7441
				}
			}
			
		}
	}
}

void fushi_angl15_to_ampl(fushi_structure *pResult)
{
	union_long l1,l2;
	
	l1.L = (long)(*pResult).real * 15826;
	l2.L = (long)(*pResult).imag * 4240;
	l1.L = l1.L - l2.L;
	l1.L = l1.L << 2;
	(*pResult).real = l1.W[1];
	
	l1.L = (long)(*pResult).real * 4240;
	l2.L = (long)(*pResult).imag * 15826;
	l1.L = l1.L + l2.L;
	l1.L = l1.L << 2;
	(*pResult).imag = l1.W[1];

}

⌨️ 快捷键说明

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