在Matlab中使用FFT进行频移

ans*_*shu 5 matlab fft frequency-analysis

我正在通过跳频实现BFSK调制和解调,我需要使用Matlab测试我的结果。我从BFSK程序获得的输出是正弦值数组,对应于不同位的载波信号。这些信号是以2.51KHz为中心的通带信号,其周围为4KHz的带宽。但是要测试解调步骤,我需要将信号转换为基带。因此,我需要将输出信号的中心设为0Hz。

我知道,创建一个2.51KHz的复信号并将其在时域中相乘即可完成这项工作。但是我有什么方法可以fft()在Matlab中与函数一起使用来偏移信号的中心频率,然后取ifft()信号的一个来生成基带信号。

谢谢安淑

lea*_*vst 3

这应该是完全可能的。只需在计算 ifft 之前旋转 fft 过程中出现的复向量即可。

伪代码是:

shiftIndex  = 20; %// This value would depend on the frequency shift requited

Y = fft(x); %// Where x is the input vector
z = ifft (  [Y((shiftIndex+1):end);      Y(1:shiftIndex)]  );
Run Code Online (Sandbox Code Playgroud)

要获得有关需要移动索引的 bin 数量的帮助,您可能会发现以下问题很有用。。。

https://dsp.stackexchange.com/questions/2970/how-to-make-Frequency-axis-for-even-and-odd-fft-length/2971#2971

这提醒我,您将来在 DSP.stackexchange.com 上发布此类问题可能会得到更快的答案。