VB实现的IIR数字滤波器设计核心程序

需积分: 16 4 下载量 181 浏览量 更新于2024-07-15 1 收藏 297KB PDF 举报
该VB.NET程序提供了使用双线性变换法设计巴特沃兹滤波器的IIR(无限 impulse response)数字滤波器的核心算法。巴特沃茨滤波器是一种无失真滤波器,其频率响应在通带内平滑且渐变,因此具有平坦的滚降率。程序接受以下参数: 1. **PbType**:整型输入,用于指定滤波器类型: - PbType = 0: 低通滤波器,通带在零频率附近; - PbType = 1: 高通滤波器,通带在高频部分; - PbType = 2: 带通滤波器,既有低频通带又有高频通带; - PbType = 3: 带阻滤波器,阻止特定频率范围。 2. **fp1** 和 **fp2**: 双精度值,分别为通带的低端和高端频率,对于带通或带阻滤波器而言。 3. **Apass** 和 **Astop**: 输入的通带和阻带衰减度量,通常以分贝(dB)表示。 4. **fs1** 和 **fs2**: 阻带的低端和高端频率,用于定义滤波器的截止点。 5. **fsamp**: 采样频率,影响滤波器的实际工作效果。 6. **points**: 整型参数,指定幅频特性计算的点数,用于精确描绘滤波器的频率响应。 7. **ord**: 整型滤波器阶数,决定滤波器的复杂性和性能。 8. **NumSec()** 和 **DenSec()**: 分别输出转移函数的分子多项式系数和分母多项式系数的二维数组,这些数组反映了滤波器的结构。 9. **NumSec_Z()** 和 **DenSec_Z()**: 输出系统函数的分子和分母多项式系数,这些系数用于计算实际的数字滤波器响应。 10. **AR()**: 输出幅频特性数组,展示了滤波器在不同频率下的增益特性。 程序根据输入的滤波器类型进行条件判断,如低通、高通、带通或带阻,然后利用双线性变换技术将模拟滤波器的参数转换为数字滤波器的系数,最终计算出所需的二阶节系数数组。这个核心代码模块可用于实现不同类型巴特沃兹滤波器的设计,是信号处理和控制系统中的重要组成部分。