2012-08-03 81 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