📄 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 + -