我正在通过跳频实现BFSK调制和解调,我需要使用Matlab测试我的结果。我从BFSK程序获得的输出是正弦值数组,对应于不同位的载波信号。这些信号是以2.51KHz为中心的通带信号,其周围为4KHz的带宽。但是要测试解调步骤,我需要将信号转换为基带。因此,我需要将输出信号的中心设为0Hz。
我知道,创建一个2.51KHz的复信号并将其在时域中相乘就可以完成这项工作。但是有什么方法可以与Matlab中的fft()
函数一起使用来偏移信号的中心频率,然后对信号进行ifft()
生成基带信号。
谢谢,
安树
最佳答案
这应该是完全可能的。在计算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)] );
为了帮助您移动索引所需的箱数,您可能会发现以下问题有用。 。 。
https://dsp.stackexchange.com/questions/2970/how-to-make-frequency-axis-for-even-and-odd-fft-length/2971#2971
这提醒我,将来您可能会得到更快的答案,将类似的问题发布在DSP.stackexchange.com上。