我一直在尝试一些不同的技术,我可以找到用于频率转换的方法(特别是我想将高频信号转换为较低的频率)。目前我正在尝试使用这种技术 -
将原始信号 x(t) 乘以: cos(2 PI dF t), sin(2 PI dF t) R(t) = x(t) cos(2 PI dF t) I(t) = x(t) sin(2 PI dF t) 其中 dF 是要偏移的增量频率。现在您有两个时间序列信号:R(t) 和 I(t)。使用 R(t) 作为实部,I(t) 作为虚部,进行复傅立叶变换。结果将是频移频谱。
我已将其解释为以下代码 -
for(j=0;j<(BUFFERSIZE/2);j++)
{
Partfunc = (((double)j)/2048);
PreFFTShift[j+x] = PingData[j]*(cos(2*M_PI*Shift*(Partfunc)));
PreFFTShift[j+1+x] = PingData[j]*(sin(2*M_PI*Shift*(Partfunc)));
x++;
}
//INITIALIZE FFT
status = arm_cfft_radix4_init_f32(&S, fftSize, ifftFlag, doBitReverse);
//FFT on FFTData
arm_cfft_radix4_f32(&S, PreFFTShift);
这为我构建了一个包含交错实数和图像数据的数组,然后是 FFT。然后我反转 FFT,但我得到的输出非常乱码。与我认为的结果相比,结果似乎很大,虽然有一些频移信号的痕迹,但很难说,因为结果似乎大部分都很嘈杂。
我还尝试简单地旋转原始信号的标准 FFT 的数组值以获得频移,但无济于事。有没有更好的方法来做到这一点?