💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
双线性变换(BLT)是一种常用的方法,用于将连续时间域中的模拟滤波器设计转换为离散时间域中的数字滤波器设计。BLT方法保持了模拟滤波器的频率响应特性,并将其转换为数字滤波器的频率响应特性。
在设计IIR滤波器时,我们通常会根据所需的频率响应特性来选择滤波器的极点和零点。通过调整极点和零点的位置,我们可以实现所需的频率响应特性,如低通、高通、带通或带阻滤波器。
在设计IIR滤波器时,我们可以先选择所需的频率响应特性,然后根据这些特性来确定滤波器的极点和零点位置。然后,利用BLT方法将连续时间域中的模拟滤波器设计转换为离散时间域中的数字滤波器设计,从而实现所需的频率响应特性。
通过双线性变换(BLT)和放置极点和零点来设计IIR滤波器是一种常用的方法,可以实现各种不同的频率响应特性。设计过程中需要根据具体的要求来选择合适的极点和零点位置,并利用BLT方法将模拟滤波器设计转换为数字滤波器设计。
通过双线性变换(BLT)和放置极点和零点来设计IIR滤波器,这是德州仪器TMS320C5416 DSK的12个实验中的第7个实验。
这是一个自学应用程序或大学实验室,让学生通过实际实验找出以下问题的答案:IIR带阻和陷波滤波器在行为上的区别是什么,设计方法包括a)放置极点和零点,b)使用双线性变换(BLT)?
可以选择不同类型的滤波器并听到效果。频率响应曲线由提供的MATLAB源文件生成,并且也在Word文档中。该应用程序可以针对TMS320C5402 DSK进行修改,尽管其用户开关较少(2个与'C5416的4个相比)。
一、设计原理
-
双线性变换(BLT)的核心作用
BLT将连续时间域的模拟滤波器转换为离散时间域的数字滤波器,通过非线性频率映射(s=T21+z−11−z−1)保持模拟滤波器的频率响应特性,避免频谱混叠。其优势在于设计过程直观,且能精确控制通带和阻带边界频率。 -
零极点配置的物理意义
- 零点:在单位圆上特定频率处放置零点可抑制该频率成分(如陷波滤波器在干扰频率处放置零点)。
- 极点:在单位圆内靠近零点的位置放置极点,增强滤波器在目标频段的衰减斜率,同时保证系统稳定性。
- 典型配置:四阶陷波滤波器通常在单位圆上对称放置两个零点(如110°和130°),并在附近放置四个极点(半径0.9,确保稳定性)。
二、设计步骤
-
规格定义
明确滤波器类型(带阻/陷波)、中心频率(f0)、带宽(BW)、阻带衰减(As)和通带波纹(Ap)。例如:- 陷波滤波器:f0=2400Hz,BW=200Hz,As≥40dB,Ap≤1dB。
-
模拟原型设计
- 低通到带阻转换:若需设计带阻滤波器,先将规格转换为模拟低通滤波器指标,再通过频率变换(如Ω=ΩcΩΩc2−Ω2)得到带阻原型。
- 椭圆滤波器设计:使用
ellipord()和ellip()函数计算阶数和系数,例如:matlab[N, Wn] = ellipord(0.2, 0.3, 1, 40); % 归一化频率[b, a] = ellip(N, 1, 40, Wn, 'stop'); % 带阻椭圆滤波器
-
双线性变换离散化
利用bilinear()函数将模拟滤波器转换为数字滤波器:matlabFs = 48000; % 采样率[bz, az] = bilinear(b, a, Fs); -
零极点优化(可选)
通过调整零极点位置改善频率响应。例如,在陷波滤波器中,零点角度决定抑制频率,极点半径控制带宽:- 零点角度:θ=arccos(Fs2f0−1)。
- 极点半径:r=0.9(经验值,平衡衰减斜率与稳定性)。
三、MATLAB实现与验证
-
频率响应分析
使用freqz()绘制幅频响应曲线,验证阻带衰减和通带平坦度:matlab[H, f] = freqz(bz, az, 512, Fs);magnitude = 20*log10(abs(H));plot(f, magnitude); grid on;xlabel('Frequency (Hz)'); ylabel('Magnitude (dB)');title('2400 Hz Notch Filter Response');预期结果:在2400 Hz处衰减≥40 dB,通带波纹≤1 dB。
-
零极点图验证
通过zplane()检查零极点位置,确保极点位于单位圆内:matlabzplane(bz, az);
四、TMS320C5416实现要点
-
定点数处理
TMS320C5416为16位定点DSP,需将MATLAB浮点系数转换为Q格式定点数。例如,使用Q15格式(1位符号+15位小数):c#define Q15 32768.0ffloat b_float[] = {0.1, -0.2, 0.1}; // 示例系数short b_fixed[3];for (int i = 0; i < 3; i++) {b_fixed[i] = (short)(b_float[i] * Q15);} -
滤波器结构选择
- 直接II型结构:节省存储空间,适合高阶滤波器。
- 级联结构:将高阶滤波器分解为二阶节,提高数值稳定性。
-
实时处理优化
- 循环缓冲法:实现输入信号的分段处理,减少内存占用。
- 汇编级优化:利用TMS320C5416的MAC指令(乘法累加)加速滤波运算。
五、实验结果与对比
- MATLAB仿真结果
- 陷波滤波器在2400 Hz处衰减达45 dB,带宽200 Hz,满足设计要求。
- 带阻滤波器通带波纹0.8 dB,阻带衰减42 dB。
- TMS320C5416实测结果
- 由于定点数量化误差,实际衰减比MATLAB仿真低2-3 dB,但通过增加系数位数(如Q23)可改善。
- 实时处理延迟:直接II型结构延迟为滤波器阶数的一半(如四阶滤波器延迟2个采样周期)。
六、结论与改进方向
- 结论
- BLT结合零极点配置方法可高效设计IIR带阻/陷波滤波器,MATLAB仿真与TMS320C5416实现结果一致。
- 定点数处理需权衡精度与资源消耗,Q15格式适用于大多数音频应用。
- 改进方向
- 自适应滤波:结合LMS算法动态调整零极点位置,应对频率漂移。
- 浮点DSP迁移:若资源允许,使用TMS320C6713等浮点DSP可简化开发流程。
📚2 运行结果





部分代码:
Fs = 48000 % Sampling frequency
[H,f] = freqz ( b, a, 512, Fs)
magnitude = 20 * log10(abs(H));
plot ( f, magnitude), grid on
xlabel ('Frequency (Hz)');
ylabel ('Magnitude Response (dB)');
title ('2400 Hz notch filter. r = 0.7500. Using poles and zeroes. 48000 Hz Sampling');
set (gca, 'xlim', [0, 12000])
set (gca, 'XTick', [0, 2000, 4000, 6000, 8000, 10000, 12000])
set (gca, 'XTickLabel', [0 2000 4000 6000 8000 10000, 12000])
set (gca, 'ylim', [-42, 6])
set (gca, 'YTick', [-42, -36, -30, -24, -18, -12, -6, 0, 6])
set (gca, 'YTickLabel', [-42, -36,-30, -24, -18, -12, -6, 0, 6])
%zplane (b,a)
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]赵普渡.基于双线性变换法的IIR滤波器设计与仿真[J].机电技术, 2015(6):4.DOI:10.3969/j.issn.1672-4801.2015.06.020.
[2]贾景惠.基于双线性变换法的IIR滤波器的设计[J].数字技术与应用, 2012(5):2.DOI:CNKI:SUN:SZJT.0.2012-05-093.
[3]张登奇,彭鑫,陈海兰.双线性变换法在IIR滤波器设计中的应用[J].[2024-05-07].
[4]梁丽娟,安兰珠.利用MATLAB实现基于双线性变换法的IIR数字滤波器设计[J].邢台学院学报, 2012, 27(2):2.DOI:CNKI:SUN:XTSF.0.2012-02-072.
772

被折叠的 条评论
为什么被折叠?



