我有一个充满信号的实/虚样本缓冲区的缓冲区,并希望通过乘以正弦曲线来移动频域中的信号。
我认为自己有四种选择:
我想知道这里最好的方法是什么,和/或我是否错过了现有的复频信号频率变换函数。
答案 0 :(得分:0)
如果你想要速度,请在频域中进行。
FFT -> circular shift by N bins -> IFFT
我发现ffw ++包装器非常方便。
如果你真的开始在时域中做这件事,你可以用某种方式使用英特尔的VML功能:
// Create a single period of frequency offset wave
vector<complex<float> > cxWave(period);
for(int i = 0; i < period; ++i)
cxWave = i * 2 * M_PI / period;
vcExp( period, &cxWave.at(0), &cxWave.at(0) );
// Multiply entire signal by the complex sinusoid
for(int frame=0; frame < numFrames; ++frame)
{
vcMul( period, &input.at(frame*period), &cxWave.at(0), &cxWave.at(0) );
}
你当然需要填补空白。