2014-02-16 62 views
3

假設我們有下面的代碼如何歸一化頻率轉換成實際頻率

function [ x ] = generate1(N,m,A3) 
f1 = 100; 
f2 = 200; 
T = 1./f1; 
t = (0:(N*T/m):(N*T))'; %' 
wn = randn(length(t),1); %zero mean variance 1 
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn; 
%[pks,locs] = findpeaks(x); 
plot(x) 
end 

我一直在使用下面的命令

y=generate1(3,500,1); 

產生的信號,我已經得到了501長的樣品,現在我想使用音樂方法來檢測頻率,即100和200,假設參數的數量是2,所以我試過了

pmusic(y,4) 

enter image description here

實際上是如何確定從這張照片頻率?我認爲我需要從歸一化頻率轉換到實際頻率,因爲我知道歸一化頻率是一樣的$ F/F_S $其中$ F_S $是採樣頻率,但在這種情況下我應該怎麼做?

回答

4

您需要乘以採樣率的一半。即,標準化頻率「1.0」是Fsample/2。

對於一個簡單的例子,這裏是在4KHz的採樣的200 Hz的信號:

x=sin(2*pi*200/4000*[0:1000]) 

運行pmusic(x, 2)給出在歸一化頻率0.1的顯着峯。 轉換爲Hz,這是0.1 * 4000/2 = 200 Hz。

我已經修改了你的功能,使其更容易分析(只有一個正弦函數,並沒有隨機性):

function x = gen(N,m) 
    f1 = 100; 
    T = 1/f1; 
    dt = N*T/m; 

    x = sin(2*pi*f1*dt*[0:num_of_samples]); 
end 

x = gen(3,500,1e3); 

爲了得到更好的解決方案使用pmusic(x,2,[0:.01:0.2])

+0

非常感謝,在我的情況下,我該怎麼辦?讓我們假設N = 3和m = 500 –

+0

但爲什麼0.1?在我的例子中採樣頻率是16666.66666666667,所以我應該有0.1 * 16666.66666666667/2? –

+0

你在這裏?我不能繼續在我的圖片峯值 –