2015-04-07 43 views
0

我有一個混頻器,我想從輸出時域信號中提取頻率。輸出時間域信號爲:假設錯誤的FFT結果

Vd = (Rd/(33e3+Rd))*(Vrf*sin(Wrf*t)+Vlo*sin(Wlo*t)); 
y_t = 11*Vd; 
func_ = y_t; 

其中:

Vrf=27e-3; 
Vlo=140e-3; 
Frf=10e6; 
Flo=9.9e6; 
Wrf=Frf*2*pi; 
Wlo=Flo*2*pi; 
Rd = 70; 

我試圖通過下面的循環的方式來計算從時域信號的傅立葉係數:

order_max=10; 
f_ = 0; 
for m = -1*order_max:order_max 
    for n = -1*order_max:order_max 
     if (m*Wrf+n*Wlo <= 0); 
     continue; 
    end 

    k = (m*Frf+n*Flo)*T0; 

    f_ = f_ + 1; 

    Func(f_) = integral(@(t)subs(func_).*exp(-1i*2*pi*k*t/T0), -T0/2, T0/2)/T0; 
    f(f_) = k/T0; 

end 

時域信號如下: 1

和係數是: 2

從傅立葉係數可以看出,與時域信號相比,1e5的頻率幅度非常低。

我認爲傅立葉係數和時域信號不匹配!

你能幫我找出問題嗎?

+0

除了以下事實:這不是一個[FFT](http://en.wikipedia.org/wiki/Fast_Fourier_transform) ,因爲信號在該頻率處不包含頻率分量,所以1e5的幅度非常低。你可能認爲在你的時間信號中是1e5分量可能是節拍效應,它在該頻率顯示爲正弦包絡,但是這是兩個頻率相似的頻率(10e6&9.9e6)的結果。這些音調看起來似乎出現在傅立葉係數圖中(儘管在所選的對數標度上重疊)。 – SleuthEye

回答

0

的1E5頻率分量的幅度是非常低的,因爲信號不以該頻率包含顯著能量, 信號實際上在由參數Flo=9.9e6Frf=10e6指定的頻率的兩個頻率成分的組成之中。 請注意,這兩個頻率確實出現在你的頻率曲線,並且其規模似乎也對應於給定的時間信號正弦係數:

> 11*(Rd/(33e3+Rd))*[Vrf Vlo] 
ans = 

    6.2867e-004 3.2598e-003 

相應地,頻率分量:

> abs(Func(find(abs(f-10e6)<1))) % Frf component 
ans = 6.2867e-004 
> abs(Func(find(abs(f-9.9e6)<1))) % Flo component 
ans = 0.0032598 

你可能會認爲你的時間信號中的1e5分量可能來自信號的包絡,信號表現爲頻率爲1e5的節拍。

作爲一個例子,如果我們計算的信封一個非常簡單的Envelope detector

func y = envelopedetector(x) 
    k = 0.999; % decay factor 
    y(1) = x(1); 
    for i=2:length(x) 
    if (x(i) > y(i-1)) 
     y(i) = x(i); 
    else 
     y(i) = k*y(i-1); 
    end 
    end 
end 

我們得到的紅,我對你的時間信號圖疊加曲線:

time-signal with envelope overlapped

如果我們然後計算包絡信號的傅立葉係數,我們的確可以得到1e5的分量(注意圖中沒有顯示0對應於直流偏置的另一個重要分量):

frequency components

現在既然你提到FFT,有可能獲得與FFT的傅里葉係數的近似值。 回顧傅立葉係數由下式給出:

Fourier coefficients

並且將所述基本週期T 成N個樣本,積分可以近似(具有日益精確的近似當N增加)爲:

Fourier coefficients approximation

這是密切相關的離散傅立葉變換。因此,鑑於func_評價過的基本週期,傅立葉係數是大約:

T0  = 1e-5; 
t  = [0:N-1]*T0/N; 
y  = func_(t); 
Func = fft(y)*2/N; 
Func(1) = 0.5*Func(1); % scaling factor is 1/N (instead of 2/N) for f=0