你的位置:首頁 > 測試測量 > 正文

IIR濾波器與FIR濾波器的特點分析

發(fā)布時間:2018-11-30 責任編輯:xueqi

【導讀】IIR濾波器又叫IIR數字濾波器,“遞歸濾波器”。遞歸濾波器,也就是IIR數字濾波器,顧名思義,具有反饋。FIR濾波器:有限長單位沖激響應濾波器,又稱為非遞歸型濾波器,是數字信號處理系統(tǒng)中最基本的元件。
 
IR濾波器,FIR濾波器和窗口滑動濾波
 
通常,信號的頻譜處于有限的頻率范圍內,而噪聲的頻譜則散布在很廣的頻率范圍內,為了消除噪聲,可以把FIR濾波器或者IIR濾波器設計成合適的頻帶濾波器,進行頻域濾波。
 
一般濾波器可以分為經典濾波器和數字濾波器。
 
經典濾波器:假定輸入信號中的有用成分和希望去除的成分各自占有不同的頻帶。如果信號和噪聲的頻譜相互重迭,經典濾波器無能為力。比如 FIR 和 IIR 濾波器等。
 
現代濾波器:從含有噪聲的時間序列中估計出信號的某些特征或信號本身?,F代濾波器將信號和噪聲都視為隨機信號。包括 Wiener Filter、Kalman Filter、線性預測器、自適應濾波器等
 
一、IIR濾波器
 
IIR濾波器又叫IIR數字濾波器,“遞歸濾波器”。遞歸濾波器,也就是IIR數字濾波器,顧名思義,具有反饋。IIR數字濾波器是一類遞歸型的線性時不變因果系統(tǒng)。
 
特點:
 
lIR數字濾波器的系統(tǒng)函數可以寫成封閉函數的形式,具有反饋回路;
 
IIR數字濾波器的相位非線性,相位特性不好控制,隨截止頻率變化而變化,對相位要求較高時,需加相位校準網絡;
 
IIR濾波器有歷史的輸出參與反饋,同FIR相比在相同階數時取得更好的濾波效果;
 
IIR數字濾波器采用遞歸型結構,由于運算中的舍入處理,使誤差不斷累積,有時會產生微弱的寄生振蕩。
 
IIR濾波原理圖
 
#define Pi 3.1415927f
/**************************************************************************
函數原型:void Calculate_FilteringCoefficient(float Time, float Cut_Off)
功    能:iir低通濾波參數計算
**************************************************************************/
void Calculate_FilteringCoefficient(float Time, float Cut_Off)
{
ACC_IIR_FACTOR = Time /( Time + 1/(2.0f*Pi*Cut_Off) );
// ACC_IIR_FACTOR為IIR濾波器因數
}
/**************************************************************************
函數原型: void ACC_IIR_Filter(struct _acc *Acc_in,struct _acc *Acc_out)
功    能: iir低通濾波
**************************************************************************/
void ACC_IIR_Filter(struct _acc *Acc_in,struct _acc *Acc_out)
{
Acc_out->x = Acc_out->x + ACC_IIR_FACTOR*(Acc_in->x - Acc_out->x);
Acc_out->y = Acc_out->y + ACC_IIR_FACTOR*(Acc_in->y - Acc_out->y);
Acc_out->z = Acc_out->z + ACC_IIR_FACTOR*(Acc_in->z - Acc_out->z);
}
 
二、FIR濾波器
 
FIR(Finite Impulse Response)濾波器:有限長單位沖激響應濾波器,又稱為非遞歸型濾波器,是數字信號處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特性的同時具有嚴格的線性相頻特性,同時其單位抽樣響應是有限長的,因而濾波器是穩(wěn)定的系統(tǒng)。因此,FIR濾波器在通信、圖像處理、模式識別等領域都有著廣泛的應用。
 
特點:
 
FIR濾波器的最主要的特點是沒有反饋回路,穩(wěn)定性強,故不存在不穩(wěn)定的問題;
 
FIR具有嚴格的線性相位,幅度特性隨意設置的同時,保證精確的線性相位;
 
FIR設計方式是線性的,硬件容易實現;
 
FIR相對IIR濾波器而言,相同性能指標時,階次較高,對CPU的性能要去較高。

FIR濾波原理圖
 
三、滑動窗口濾波
 
滑動平均濾波算法只采樣一次,將一次采樣值和過去的若干次采樣值一起求平均,得到的有效采樣值即可投入使用。如果取N個采樣值求平均,存儲區(qū)中必須開辟N個數據的暫存區(qū)。每新采集一個數據便存入暫存區(qū)中,同時去掉一個最老數據,保存這N個數據始終是最新更新的數據。采用環(huán)型隊列結構可以方便地實現這種數據存放方式。
 
#define Filter_Num 2
/**************************************************************************
函數原型: void Gyro_Filter(struct _gyro *Gyro_in,struct _gyro *Gyro_out)
功    能: gyro窗口滑動濾波
**************************************************************************/
void Gyro_Filter(struct _gyro *Gyro_in,struct _gyro *Gyro_out)
{
static int16_t Filter_x[Filter_Num],Filter_y[Filter_Num],Filter_z[Filter_Num];
static uint8_t Filter_count;
int32_t Filter_sum_x=0,Filter_sum_y=0,Filter_sum_z=0;
uint8_t i=0;
 
Filter_x[Filter_count] = Gyro_in->x;
Filter_y[Filter_count] = Gyro_in->y;
Filter_z[Filter_count] = Gyro_in->z;
 
for(i=0;i<Filter_Num;i++)
{
Filter_sum_x += Filter_x[i];
Filter_sum_y += Filter_y[i];
Filter_sum_z += Filter_z[i];
}
 
Gyro_out->x = Filter_sum_x / Filter_Num;
Gyro_out->y = Filter_sum_y / Filter_Num;
Gyro_out->z = Filter_sum_z / Filter_Num;
 
Filter_count++;
if(Filter_count == Filter_Num)
Filter_count=0;
}
 
要采購濾波器么,點這里了解一下價格!
特別推薦
技術文章更多>>
技術白皮書下載更多>>
熱門搜索
?

關閉

?

關閉