MATLAB|切比雪夫低通濾波器設計與濾波實現(xiàn)

1. 問題描述

本人并非信號處理專業(yè)鹅经,僅在結(jié)構(gòu)監(jiān)測研究中遇到濾波問題瞬雹,特總結(jié)常規(guī)的低通濾波技術酗捌,去除高頻噪音胖缤。

由于環(huán)境的干擾因素哪廓,監(jiān)測信號中總會包含噪音成分涡真,影響信號處理過程哆料,如下圖:

接收信號中出現(xiàn)很多“毛刺”东亦,即為高頻噪音典阵,預期通過低通濾波器過濾處理壮啊。

2. 技術背景

在MATLAB中有很多種濾波器可供選擇撑蒜,本文僅介紹一筆者實現(xiàn)的濾波方式:切比雪夫濾波器充坑。

低通濾波的技術要點有:

  • 濾波器參數(shù)設置
[n,Wp]=cheb1ord(Wp,Ws,Rp,Rs);                                   % Cheby1
[b,a]=cheby1(n,Rp,Wp);
freqz(b,a,2048,fs);                                             % 查看設計濾波器的曲線    
  • 信號濾波運算
y = filter(b,a,x);

此處僅說明代碼實現(xiàn),理論問題不再說明份企。

3. 解決方案

濾波器參數(shù)的設置是有效濾波的關鍵司志,最重要的參數(shù)是確定濾波的范圍:

  • 通過頻率$f_{pass}$
  • 截止頻率$f_{stop}$

上圖可以看出,原信號的頻域范圍主要在100~300kHz腰根。故可以設置:

  • 通過頻率$f_{pass}= 300 kHz$
  • 截止頻率$f_{stop}= 500 kHz$

即過濾掉500 kHz以上的高頻噪音。

4. 實施示例

4.1 數(shù)據(jù)讀入

%% 數(shù)據(jù)讀入

clc,clear,close all
[M,dt] = tools.getcsv();                                            % 讀入csv信號和采樣周期dt

fs = 1/dt;                                                          % 采樣頻率
t = M(:,1);
s = detrend(M(:,3));                                                % 去趨勢的信號

4.2 濾波參數(shù)設置

%% 參數(shù)設置

prompt0 = {                                                         % 對話框參數(shù)
    '通過頻率 f-pass(kHz)', 300
    '截止頻率 f-stop(kHz)', 500
    'Passband ripple in decibels Rp',0.1
    '衰減值Rs(Db)',30
};

dlg0.title = '濾波參數(shù)輸入-馬騁';
dlg0.save = 'lp';

para_input = tools.paradlg(prompt0,dlg0);

para.f1 = para_input{1}*1e3;
para.f3 = para_input{2}*1e3;
para.rp = para_input{3};
para.rs = para_input{4};
para.fs = fs;

注:以上tools為筆者自定義函數(shù)工具箱。

4.3 濾波器生成

%% cheby1低通濾波圖示

para.type = 1;                                                      % 濾波器類型:切比雪夫-1
s_lp = tools.lowp(s,para);                                          % 濾波

可以看出,濾波器在頻域300-500 kHz范圍內(nèi)逐漸衰減靠闭。

4.4 濾波效果

%% 處理信號繪圖

figure
plot([t t],[s s_lp])
legend({'原始信號','低通濾波信號'})
title('cheby1低通濾波效果示例'),grid on
xlim([min(t) max(t)])

figure
subplot(211)
plot(t,s)
legend('原始信號'),grid on 
xlim([min(t) max(t)])

subplot(212)
plot(t,s_lp)
legend('濾波信號'),grid on 
xlim([min(t) max(t)])

顯然,濾波后的信號平滑很多坎炼。

5. 常見問題

濾波核心函數(shù)如下:

function y=lowp(x,para)
% 題目: 低通濾波器
% 輸入:
%       x       -- 原始信號序列
%       para.
%           f1  -- 通帶截止頻率
%           f3  -- 阻帶截止頻率
%           rp  -- 邊帶區(qū)衰減DB數(shù)設置
%           rs  -- 截止區(qū)衰減DB數(shù)設置
%           fs  -- 序列x的采樣頻率
%           type-- 濾波器類型
% 輸出:
%       y      -- 濾波后的信號
% 功能:
%       低通濾波愧膀,濾除高頻噪音
%       Cheby1
%       Butterworth
% 注意:
%       通帶或阻帶的截止頻率的選取范圍是不能超過采樣率的一半
%       f1,f3的值都要小于fs/2
%       rp=0.1;rs=30;%通帶邊衰減DB值和阻帶邊衰減DB值
% 作者: 未知
% 修改: 馬騁
% 2016.04.21 @HIT

%% 參數(shù)輸入

f1 = para.f1;
f3 = para.f3;
Rp = para.rp;
Rs = para.rs;
fs = para.fs;

%% 濾波器設計
Wp = f1/(fs/2);                                                     % 采用fs/2歸一化,Nyquist frequency.
Ws = f3/(fs/2);

if para.type==1
    [n,Wp]=cheb1ord(Wp,Ws,Rp,Rs);                                   % Cheby1
    [b,a]=cheby1(n,Rp,Wp);
    freqz(b,a,2048,fs);                                             % 查看設計濾波器的曲線    
    title(sprintf('n = %d Cheby1 Lowpass Filter',n))
    xlim([0 f3])
else
    
    [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s');                              % Butterworth
    [b,a] = butter(n,Wn,'s');                                       % 計算濾波器系統(tǒng)函數(shù)分子分母多項式
    
    [z,p,k] = butter(n,Wn);
    sos = zp2sos(z,p,k);    
    freqz(sos,2048,fs)
    title(sprintf('n = %d Butterworth Lowpass Filter',n))
    xlim([0 f3])    
end

%% 濾波
y = filter(b,a,x);                                                  % 對序列x濾波后得到的序列y

end  % lowp

注:此函數(shù)中,僅切比雪夫-1濾波器測試成功点弯,2型濾波器測試失敗扇调。


示例程序下載:

https://coding.net/u/frank0449/p/MATLAB_lowpassFilter/git

本文用時 25 m

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抢肛,隨后出現(xiàn)的幾起案子狼钮,更是在濱河造成了極大的恐慌,老刑警劉巖捡絮,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熬芜,死亡現(xiàn)場離奇詭異,居然都是意外死亡半火,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門酪我,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稠歉,你說我怎么就攤上這事毡代∧笥悖” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵藏斩,是天一觀的道長。 經(jīng)常有香客問我屈溉,道長,這世上最難降的妖魔是什么场航? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任孩饼,我火速辦了婚禮镀娶,結(jié)果婚禮上好啰,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般陪每。 火紅的嫁衣襯著肌膚如雪盼产。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天锋喜,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛共耍,可吹牛的內(nèi)容都是我干的颤诀。 我是一名探鬼主播遗淳,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼一铅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搜囱?” 一聲冷哼從身側(cè)響起扮宠,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤楣颠,失蹤者是張志新(化名)和其女友劉穎挎春,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡梆惯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡宋舷,死狀恐怖祝蝠,靈堂內(nèi)的尸體忽然破棺而出幻碱,到底是詐尸還是另有隱情承疲,我是刑警寧澤燕鸽,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布党远,位于F島的核電站济似,受9級特大地震影響潭流,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一茬末、第九天 我趴在偏房一處隱蔽的房頂上張望厂榛。 院中可真熱鬧,春花似錦丽惭、人聲如沸击奶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柜砾。三九已至,卻和暖如春换衬,著一層夾襖步出監(jiān)牢的瞬間痰驱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工瞳浦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留担映,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓术幔,卻偏偏與公主長得像另萤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容