我正在使用跳频实现BFSK调制和解调,我需要使用Matlab测试我的结果。我从BFSK程序得到的输出是一个正弦值数组,对应于不同位的载波信号。这些信号是以2.51KHz为中心的带通信号,其周围带宽为4KHz。但是为了测试解调步骤,我需要将信号转换为基带。所以我需要将输出信号置于0Hz。
我知道创建一个2.51KHz的复杂信号并将其在时域中相乘可以完成这项工作。但有没有任何方法可以在matlab中使用fft()
函数来移动信号的中心频率,然后取ifft()
信号来生成基带信号。
谢谢, 安舒
答案 0 :(得分: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)] );
有关您需要移动索引的bin数量的帮助,您可能会发现以下问题很有用。 。 。
这让我想起,将来你可能会在DSP.stackexchange.com上发布更快的答案。