IIR+双向滤波实现系统零相位相移_MATLAB仿真
生活随笔
收集整理的這篇文章主要介紹了
IIR+双向滤波实现系统零相位相移_MATLAB仿真
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.雙向濾波實現(xiàn)零相移的思想
Matlab軟件有一個m文件filtfilt.m,可以實現(xiàn)零相位數(shù)字濾波。它先將輸入序列按順序濾波(forward filter),然后將所得結果逆轉后反向通過濾波器(reverse filter),再將所得結果逆轉后輸出(reverse output),即得精確零相位失真的輸出序列,為方便起見將這種濾波方法取名為FRR濾波。FRR濾波的原理可作如下推證:
2.Matlab仿真實驗結果
1.生成原始信號,并顯示相位
2.設計低通巴特沃茲濾波器,去除兩個高頻成分,保存低頻成分
3.原始序列第一次通過低通濾波器,觀察相位和幅度哪一個失真了!
我們會發(fā)現(xiàn),經(jīng)過IIR濾波器后,幅度幾乎沒有失真,而相位失真很嚴重!!!!
4.序列反轉,第二次經(jīng)過低通濾波器,實現(xiàn)相位補償
相位確實得到了補償,IIR結合雙向濾波確實可以實現(xiàn)零相位相移問題!
3.Matlab核心源碼共享
%************************************************************************** % All Rights Reserved @Shenchunxu % Data:20161129 Tsinghua Univ. %************************************************************************** %雙向濾波法實現(xiàn)零相位 clear clc close all %% 生成一個信號**************************************************%% Fs = ; t = (0:1/Fs:1); %歸一化頻率設計 y = ; yreal =; %% 設計一個低通濾波器*********************************************%% fp=10/500;%通帶截止頻率 0.02 fs=30/500;%阻帶截止頻率 0.06 wp=3;%通帶最大衰減 ws=30;%阻帶最大衰減 [n,fc]=buttord(fp,fs,wp,ws); [b,a]=butter(n,fc); %% 將生成的信號通過低通濾波器**************************************%% z=filter(b,a,y); %% 對經(jīng)過第一個濾波器后的信號序列反轉*******************************%% zf = fliplr(z); %% 反轉再通過濾波器***********************************************%% zfz = filter(b,a,zf);%對經(jīng)過第一個濾波器后的信號序列 %% 對經(jīng)過第二個濾波器后的信號序列反轉*******************************%%? zz = fliplr(zfz);%作為最后輸出?總結
以上是生活随笔為你收集整理的IIR+双向滤波实现系统零相位相移_MATLAB仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 163相册密码破解秘诀
- 下一篇: IIR+全通滤波器实现相位平衡_matl