数字信号处理学习笔记(四)|实现巴特沃斯型模拟低通滤波器
生活随笔
收集整理的這篇文章主要介紹了
数字信号处理学习笔记(四)|实现巴特沃斯型模拟低通滤波器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
無限脈沖響應數字濾波器設計
一、數字濾波器概念
1、概念
輸入、輸出均為數字信號,通過一定運算關系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分的器件。
2、從網絡結構分類
| 存在反饋,h(n)無限長 | 不存在反饋,h(n)有限長 |
2、從功能分類
低通
高通
全通
帶通
帶阻
二、數字濾波器的設計方法
1、按要求確定濾波器的性能指標
2、用IIR或FIR系統函數去逼近這一性能要求
3、選擇適當的運算結構去實現這個系統函數
4、用軟件或者硬件實現
四、設計巴斯沃特低通濾波器
1.根據技術指標求出濾波器階數N
2.根據公式或查表求出歸一化極點,得到歸一化傳遞函數
3.將歸一化傳輸函數去歸一化,得到實際的傳輸函數
N越大,幅度下降越快,過渡帶越窄
五、算法實現
設計一個滿足下列指標的巴特沃斯型模擬低通濾波器:
fp=1kHz,fs=2kHz,Ap<=1dB,As>=40dB
5.1代碼
#include<stdio.h> #include<math.h> #include<complex.h> #define pi 3.1416 int main() {double Wp = 2*pi*1000, Ws = 2*pi*2000, Ap = 1, As = 40;//確定濾波器階數Nint N = ceil(log10((pow(10,0.1*As)-1)/(pow(10,0.1*Ap)-1))/(2*log10(Ws/Wp)));//確定3dB截頻Wcdouble Wc = Ws / (pow(pow(10,0.1*As)-1,1.0/(2*N)));int i;double complex s[100];//求系統函數的極點for(i=1; i<=N; i++)s[i] = Wc*(cexp(I*pi*(1.0/2+1.0*(2*i-1)/(2*N))));//求系統函數int w;for(w=0; w<=2*pi*3000; w++){double complex H=1, t;for(i=1; i<=N; i++){t = (-s[i]) / (I*w-s[i]);H = H * t;}printf("%f\t%f\n", w/(2*pi), 20*log10(cabs(H)));} }5.2 gnuplot繪圖
總結
以上是生活随笔為你收集整理的数字信号处理学习笔记(四)|实现巴特沃斯型模拟低通滤波器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机考试internet应用好考吗,2
- 下一篇: java中下拉框select和单选按钮的