2012-08-03 52 views
4

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

我知道创建一个2.51KHz的复合信号并在时域上乘它就可以完成这项工作。但是,有没有什么方法可以在matlab中用fft()函数来移动信号的中心频率,然后用信号的ifft()来产生基带信号。

感谢, 安舒

回答

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)] ); 

有关,你会需要通过对指数移动窗口的数量的帮助下,你可能会发现以下问题有用。 。 。

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

这让我想起,你可能会得到更快的答案张贴在今后DSP.stackexchange.com这样的问题。

+0

非常感谢learnvst ....这个方法工作完美....我将确保在未来DSP.stackexchange.com上提出有关DSP的相关问题 – anshu 2012-08-03 12:07:47