FIR數字濾波器 C語言實現

2021-09-17 18:21:30 字數 2159 閱讀 1286

matlab設定fir低通濾波器;型別為equiripple;minimun order;density factor:20;fs:48000;fpass:2000;fstop:3000

截圖如下:

matlab生成的檔案:

/*

* filter coefficients (c source) generated by the filter design and analysis tool

* generated by matlab(r) 8.3 and the signal processing toolbox 6.21.

* generated on: 09-apr-2019 19:12:44

*//*

* discrete-time fir filter (real)

* -------------------------------

* filter structure : direct-form fir

* filter length : 123

* stable : yes

* linear phase : yes (type 1)

*//* general type conversion for matlab generated c-code */

#include "tmwtypes.h"

/* * expected path to tmwtypes.h

* c:\program files\matlab\r2014a\extern\include\tmwtypes.h

*/const int bl = 123;

const real64_t b[123] = ;

void process(float *x,float *y,int n)

}

我的專案是用乙個123階的fir低通濾波器濾除4k以後的訊號,所以我的測試檔案含有500hz,1000hz,2000hz,4000hz訊號疊加。測試檔案為48k取樣率,32位float,小端模式,單聲道。

#include #include #define frame_read_length   (256)

#define factor 2.0*3.1415926/48000.0

#define fir_filter_length 123

float fir_coffes[fir_filter_length]=

;float state[fir_filter_length+1]=;

void process(float *x,float *y,int n)

}int main()

; float pwritedata[frame_read_length] = ;

#if 0//統計fir引數之和 1.01

int i = 0,k = 0;

float temp;

for (i = 0, temp = 0; i < fir_filter_length; i++)

temp += fir_coffes[i];

printf("%lf\n",temp);

#endif

if ((psrcfile == null)||(pdstfile == null))

nreadlen = fread(preaddata,sizeof(float),frame_read_length,psrcfile);

while(nreadlen==frame_read_length)

fclose(psrcfile);

fclose(pdstfile);

printf("----------finished!--------\n");

return 0;

}

濾波前:

濾波後:

數字濾波器 FIR和IIR

傳統的線性數字濾波器一般有兩種型別,有限衝激響應 fir 濾波器和無限衝激響應 iir 濾波器。fir數字濾波器只用當前和過去的輸入樣點值來得到當前的輸出樣點值,過去的輸出樣點值乙個也未用到。給定乙個有限持續時間的非0輸入值,fir濾波器給出乙個有限持續時間的非0輸出值。給定乙個全為0的輸入,fir...

FIR數字濾波器設計 窗函式法 C語言實現

理想濾波器在物理上是不可實現的,其單位脈衝響應是無限長 非因果的。窗函式法,就是從時域出發,用有限長 因果的單位脈衝響應h n 去逼近理想濾波器的無限長 非因果的單位脈衝響應的方法。窗函式法又叫傅利葉級數法。更多背景資料,請看數字訊號處理 李永全 p175。設n 1階fir數字濾波器的單位衝擊響應為...

數字濾波器

數字濾波器,可以分為兩大類 一類為經典濾波器,輸入訊號中的有用成分和希望濾除的成分頻率不同.一類為現代濾波器,其輸入訊號中有用訊號和希望濾除的訊號頻帶交疊.經典濾波器,從頻域上可以分為低通 高通 帶通 帶阻濾波器 從時域特性上來看,數字濾波器可以分為fir 有限衝激響應數字濾波器 和iir 無限衝激...