2011-12-22 68 views
2

我將一個.wav信號導入Matlab工作區,然後要求我使用四階Butterworth濾波器「限制」信號,但我不確定如何做到這一點。如何在MATLAB中爲波段限制一個wav信號

+0

你有信號處理工具箱?如果你已經理解了過濾背後的理論,那麼你可以使用像「filterbuilder」這樣的工具箱附帶的GUI工具,並讓你的過濾器正確,然後如果你需要,你可以使用它,並在別處使用代碼或寫入代碼很容易。 – Ali 2011-12-22 13:05:53

+0

我被指定使用命令「黃油」,現在我的問題是,我如何使用'黃油'帶限制一個wav信號? – user1111726 2011-12-22 13:18:53

+0

黃油設計的過濾器,這裏有優秀的文檔:請閱讀並告訴我們你有哪些困難。 – Ali 2011-12-22 13:28:37

回答

1

您應該首先閱讀Matlab函數butter(位於信號處理工具箱中)的文檔。

此功能用於設計巴特沃斯濾波器。一個可能的語法是:

[b a]=butter(n,Wn,'ftype'); 
  • b和a是可以與功能filter
  • N爲採用的是濾波器的階數的數字濾波器的係數,除了在的情況下帶阻濾波器或帶通濾波器,在這種情況下,階數爲2 * n
  • Wn是截止頻率,如果要設計帶阻濾波器或帶通濾波器,它可以是2元素向量。截止頻率預計爲0和1,其中1代表奈奎斯特頻率

現在,如果要將此應用到你的情況,你可以做這樣的事情之間:

% Read wav file (store sampling frequency in fs) 
[data fs]=wavread('sample.wav'); 
% Design a 4th order lowpass filter with a cutoff frequency of 5000 Hz 
% (notice how the cutoff frequency is scaled by the Nyquist frequency fs/2) 
n=4; 
Wn=5000*2/fs; 
[b a]=butter(n,Wn,'low'); 
% Apply the filter to the data 
datafilt=filter(b,a,data); 
+0

好,但我有幾個問題,當我讀取.wav文件時,我的語法是'[data fs] = wavread('sample.wav')'我不明白爲什麼我需要使用nbit,並且在問題中提到它將信號帶寬限制爲5000Hz,所以Iam應該使用低通濾波器而不是帶通濾波器,因此它將如下所示: Wn = 5000 /(fs/2); [b,a] = butter(4,Wn,'low') datafilt = filter(b,a,data); 是否正確? – user1111726 2011-12-22 13:42:44

+0

只要保持用於設計濾波器的採樣頻率,就可以丟棄比特數並使用語法。事實上,如果你想設計一個低通濾波器,那麼Wn是一個標量,而ftype ='low'。我將編輯答案來反映這一點。 – Aabaz 2011-12-22 13:45:54

+0

好的謝謝,但我只是想確保當他說帶限制,然後Iam應該使用低通濾波器,右 – user1111726 2011-12-22 13:47:44

相關問題