2014-02-28 24 views
0

讓的說,我們有以下信號過濾器應用到給定信號

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

現在假設我想這與下面則150頻率的所有組件,所以我需要低但如何應用在這種情況下?請告訴我,我是新的過濾器設計問題,我可以構建過濾器自己?提前致謝

+0

查看MATLAB的butter()命令。您可以傳遞標準化頻率和截止頻率,並指定一個高通濾波器,它將返回濾波器係數。然後您可以使用filtfilt()函數應用過濾器。非常簡單。注意:如果你想要低於150的頻率,你實際上需要一個低通濾波器,但濾波器的設計方法應該是相同的。 – ewz

+0

是的,你是對的,對不起,這是錯誤的 –

+0

請僅舉例說明如何應用它,將其作爲回答 –

回答

1

這樣的事情應該工作:

function [ x ] = generate1(N,m,A3) 
f1 = 100; 
f2 = 200; 
T = 1./f1; 
t = (0:(N*T/m):(N*T))'; %' 
fs = m/(T*N); 
cutoff = 150; 


wn = randn(length(t),1); %zero mean variance 1 
x = 20.*sin(2.*pi.*f1.*t) + 30.*cos(2.*pi.*f2.*t) + A3.*wn; 

[b,a] = butter(4, cutoff/(fs/2)); 

x_filt = filtfilt(b,a,x); 
figure; plot(t,x) 
hold on 
plot(t,x_filt) 
%[pks,locs] = findpeaks(x); 
%plot(x) 
end 

牛油函數的調用構造具有通過上述切斷參數指定的截止頻率的第四階巴特沃斯低通濾波器(在我們的例子是在150Hz)。 「a」和「b」值是濾波器係數,它們通過filtfilt()命令應用於x向量。結果「x_filt」是包含小於150Hz的頻率分量的x的濾波版本。

+0

現在做什麼[b,a] =黃油(4,cutoff /(fs/2)); x_filt = filtfilt(b,a,x);做? –

+0

它會返回4階低通濾波器嗎? –

+0

低通濾波器對噪聲有什麼影響? –