5

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

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

谢谢,安舒

4

1 回答 1

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 数量的帮助,您可能会发现以下问题很有用。. .

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

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

于 2012-08-03T11:36:10.670 回答