模拟滤波器的设计一般包括两个方面:根据技术指标即滤波器的幅频特性确定滤波器的传递函数H(s);设计实际网络实现这一传递函数。设计滤波器H(s)的关键是找到逼近函数,目前已有多种逼近函数。然而,不论哪种逼近函数都需要进行非常繁琐的计算,还要根据计算结果进行查表。
Matlab语言是一种简单、高效的高级语言,是一种内容丰富、功能强大的分析工具,其应用范围几乎覆盖了所有的科学和工程计算领域。Matlab中提供了丰富的用于模拟滤波器设计的函数,通过编程可以很容易实现低通、高通、带通、带阻滤波器,并能画出滤波器的幅频、相频特性曲线,大大简化了模拟滤波器的设计。在此介绍了用Matlab设计实现一个无失真模拟滤波器,并给出了幅频、相频特性的仿真结果和信号通过无失真滤波器后的眼图。
1 基于Matlab的无失真滤波器设计
设计要求:一个频率为8 kHz数字基带信号经过数/模(D/A)转换后得到一个模拟信号,将该模拟信号输入无失真滤波器,要求在8 kHz频率处衰减为~6 dB;在16 kHz频率(截止频率)之后衰减达到一60 dB以上。这样做的目的是使该模拟信号经过无失真滤波器后,抑制谐波干扰,减小截止频率后波形的起伏。
无失真滤波器由三部分组成,依次为低通滤波器、带阻滤波器、相移电路。其中低通滤波器的作用是通过8 kHz以内的低频信号;带阻滤波器的作用是抑制16 kHz信号,它与前面低通滤波器级联后能使16 kHz之后信号的衰减达到一60 dB以上,有效地抑制各次谐波干扰,并减小16 kHz之后波形的起伏;相移电路的作用是补偿前面两级电路的相位偏移,使得整个无失真滤波器的相位特性成为一条直线。
1.1 低通滤波器设计
低通滤波器采用巴特沃斯型滤波器,因为它具有较平坦的幅频特性,相频特性线性较好,常作为滤波器的初级。在Matlab中,用[b,a]=butter(n,wn,‘s’)语句来实现巴特沃斯滤波器的设计。其中,[6,a]是滤波器传递函数多项式的系数;n为滤波器的阶数;wn为3 dB处的角频率;‘s’表示模拟滤波器的。
在该设计中,采用8阶巴特沃斯滤波器,一3 dB处的频率为8 kHz。主要程序如下:
最终画出低通滤波器的幅频、相频特性如图1(a)所示。实际电路采用由Max291芯片来实现巴特沃斯滤波器,它相当于8阶巴特沃斯滤波器,如图1(b)所示。
1.2 带阻滤波器设计
带阻滤波器(又称陷波器)的作用是抑制某一频率信号而通过其他频率的信号。在Matlab中用[b,a]=butter(n,Wn,′stop′,′s′)语句来实现带阻滤波器,其中[b,a]是滤波器传递函数多项式的系数;n为滤波器的阶数;wn=[fl*2*pi fu*2*pi]分别为阻带低端一3 dB和高端一3 dB处的角频率;′s′表示模拟滤波器的。主要程序如下:
与求低通滤波器的幅频、相频特性类似,带阻滤波器的幅频、相频特性如图2(a)所示。在该设计中,实际电路采用的是VCVS型二阶带阻滤波器如图2(b)所示。电阻R1,R2,R3,电容C1的取值需要确定,它们的计算公式可以通过Matlab编程来得到,最终根据计算结果选择相应的标称值。
1.3 低通滤波器与带阻滤波器的级联
将前面设计的低通与带阻滤波器进行级联,使得级联以后电路的幅频特性能满足设计要求,即在8 kHz频率处的衰减为一6 dB;16 kHz频率(截止频率)之后的衰减达到一60 dB以上。若不能达到要求,则根据仿真结果,不断修改带阻滤波器中的Q值,直到满足设计要求为止。在Matlab中,通过conv函数来实现两个电路的级联。主要程序如下:
%b3、a3为低通和带阻滤波器级联后传递函数多项式系数与求低通滤波器的幅频、相频特性类似,级联电路的幅频、相频特性如图3所示。可见,当Q取O.7时,幅频特性满足设计要求,但相频特性在8 000一Hz以内不是一根直线,为了使输出信号不至于失真,必须加上一级相移滤波器,使总的相移特性成为一条直线。 [page]
1.4 相移滤波器设计及无失真滤波器的相频特性
在该设计中,采用的是一阶反相增益全通滤波电路,它的传输函数为:
电路图如图4所示。将低通、带阻、相移电路进行级联构成无失真滤波器。在Matlab中,可以通过编程的方法得到相移、无失真滤波器的相频特性曲线。
主要程序如下:
%b,a为无失真滤波器的传递函数多项式系数,其中b3,a3为低通和带阻滤波器级联后传递函数多项式系数最终求出的相位曲线如图5所示。可以看出,无失真滤波器的相频特性为一条直线。
将各部分的实际电路进行级联,得到无失真滤波器的实际电路,该无失真滤波器的输入模拟信号和输出信号眼图如图6所示。从图中可以看出,眼图迹线清晰。眼睛大且端正,眼睛之间的交点清晰。说明该无失真滤波器的幅频、相频特性良好,可以达到设计要求。
2 结 语
使用Matlab设计模拟滤波器,既简单方便,又避免了复杂的运算和查表。通过仿真可以很直观地看出参数修改后的频率响应曲线,该设计可以满足系统设计的要求,避免了硬件电路反复调整的麻烦,大大提高了工作效率,且Matlab不但可以用于模拟滤波器的设计,还可以用于FIR,IIR等数字滤波器的设计,是一个在滤波器设计方面很有力的工具。
关键字:Matlab 模拟滤波器 无失真
引用地址:基于Matlab的无失真模拟滤波器设计
Matlab语言是一种简单、高效的高级语言,是一种内容丰富、功能强大的分析工具,其应用范围几乎覆盖了所有的科学和工程计算领域。Matlab中提供了丰富的用于模拟滤波器设计的函数,通过编程可以很容易实现低通、高通、带通、带阻滤波器,并能画出滤波器的幅频、相频特性曲线,大大简化了模拟滤波器的设计。在此介绍了用Matlab设计实现一个无失真模拟滤波器,并给出了幅频、相频特性的仿真结果和信号通过无失真滤波器后的眼图。
1 基于Matlab的无失真滤波器设计
设计要求:一个频率为8 kHz数字基带信号经过数/模(D/A)转换后得到一个模拟信号,将该模拟信号输入无失真滤波器,要求在8 kHz频率处衰减为~6 dB;在16 kHz频率(截止频率)之后衰减达到一60 dB以上。这样做的目的是使该模拟信号经过无失真滤波器后,抑制谐波干扰,减小截止频率后波形的起伏。
无失真滤波器由三部分组成,依次为低通滤波器、带阻滤波器、相移电路。其中低通滤波器的作用是通过8 kHz以内的低频信号;带阻滤波器的作用是抑制16 kHz信号,它与前面低通滤波器级联后能使16 kHz之后信号的衰减达到一60 dB以上,有效地抑制各次谐波干扰,并减小16 kHz之后波形的起伏;相移电路的作用是补偿前面两级电路的相位偏移,使得整个无失真滤波器的相位特性成为一条直线。
1.1 低通滤波器设计
低通滤波器采用巴特沃斯型滤波器,因为它具有较平坦的幅频特性,相频特性线性较好,常作为滤波器的初级。在Matlab中,用[b,a]=butter(n,wn,‘s’)语句来实现巴特沃斯滤波器的设计。其中,[6,a]是滤波器传递函数多项式的系数;n为滤波器的阶数;wn为3 dB处的角频率;‘s’表示模拟滤波器的。
在该设计中,采用8阶巴特沃斯滤波器,一3 dB处的频率为8 kHz。主要程序如下:
最终画出低通滤波器的幅频、相频特性如图1(a)所示。实际电路采用由Max291芯片来实现巴特沃斯滤波器,它相当于8阶巴特沃斯滤波器,如图1(b)所示。
1.2 带阻滤波器设计
带阻滤波器(又称陷波器)的作用是抑制某一频率信号而通过其他频率的信号。在Matlab中用[b,a]=butter(n,Wn,′stop′,′s′)语句来实现带阻滤波器,其中[b,a]是滤波器传递函数多项式的系数;n为滤波器的阶数;wn=[fl*2*pi fu*2*pi]分别为阻带低端一3 dB和高端一3 dB处的角频率;′s′表示模拟滤波器的。主要程序如下:
与求低通滤波器的幅频、相频特性类似,带阻滤波器的幅频、相频特性如图2(a)所示。在该设计中,实际电路采用的是VCVS型二阶带阻滤波器如图2(b)所示。电阻R1,R2,R3,电容C1的取值需要确定,它们的计算公式可以通过Matlab编程来得到,最终根据计算结果选择相应的标称值。
1.3 低通滤波器与带阻滤波器的级联
将前面设计的低通与带阻滤波器进行级联,使得级联以后电路的幅频特性能满足设计要求,即在8 kHz频率处的衰减为一6 dB;16 kHz频率(截止频率)之后的衰减达到一60 dB以上。若不能达到要求,则根据仿真结果,不断修改带阻滤波器中的Q值,直到满足设计要求为止。在Matlab中,通过conv函数来实现两个电路的级联。主要程序如下:
%b3、a3为低通和带阻滤波器级联后传递函数多项式系数与求低通滤波器的幅频、相频特性类似,级联电路的幅频、相频特性如图3所示。可见,当Q取O.7时,幅频特性满足设计要求,但相频特性在8 000一Hz以内不是一根直线,为了使输出信号不至于失真,必须加上一级相移滤波器,使总的相移特性成为一条直线。 [page]
1.4 相移滤波器设计及无失真滤波器的相频特性
在该设计中,采用的是一阶反相增益全通滤波电路,它的传输函数为:
电路图如图4所示。将低通、带阻、相移电路进行级联构成无失真滤波器。在Matlab中,可以通过编程的方法得到相移、无失真滤波器的相频特性曲线。
主要程序如下:
%b,a为无失真滤波器的传递函数多项式系数,其中b3,a3为低通和带阻滤波器级联后传递函数多项式系数最终求出的相位曲线如图5所示。可以看出,无失真滤波器的相频特性为一条直线。
将各部分的实际电路进行级联,得到无失真滤波器的实际电路,该无失真滤波器的输入模拟信号和输出信号眼图如图6所示。从图中可以看出,眼图迹线清晰。眼睛大且端正,眼睛之间的交点清晰。说明该无失真滤波器的幅频、相频特性良好,可以达到设计要求。
2 结 语
使用Matlab设计模拟滤波器,既简单方便,又避免了复杂的运算和查表。通过仿真可以很直观地看出参数修改后的频率响应曲线,该设计可以满足系统设计的要求,避免了硬件电路反复调整的麻烦,大大提高了工作效率,且Matlab不但可以用于模拟滤波器的设计,还可以用于FIR,IIR等数字滤波器的设计,是一个在滤波器设计方面很有力的工具。
上一篇:基于通信技术在三坐标测量系统中的应用
下一篇:一种宽输入范围高精度频率计的设计
推荐阅读最新更新时间:2024-03-30 22:54
MATLAB EXPO 2022中国用户大会在线会议开幕在即
MATLAB EXPO 2022中国用户大会在线会议开幕在即 包括30余场主题技术会议和上机实践,共同探索 MATLAB和Simulink 的最新特性和汲取各行业领导者的最佳实践。 中国 北京,2022年6月10日——MathWorks今天宣布, MATLAB EXPO 2022 中国用户大会将于 2022年6月21日至24日 在线上举行。该活动将包括30余场主题技术会议,案例分享以及基于MATLAB®和Simulink®开发流程的跨行业多应用的Demo演示,内容涵盖绿色能源、大数据与人工智能、电气化系统仿真、智能车辆与自主系统、5G无线通信与芯片等多个领域。 本次MATLAB EXPO中国用户大会将通过真实的客户案例
[嵌入式]
matlab逻辑函数
all :向量中是否所有分量均非零 any :是否有元素非零 exist :指定变量或文件是否存在 find :返回矩阵中非零元素的索引和置 is* :is系列,大部分根据名称可以知道功能 iscell() iscellstr() isempty() :是否空数组 isequal() :数组是否相等 isfield() :是否结构数组中的字段 isfinite() :数组中元素是否有限 isglobal() :是否全局变量 ishandle() :是否有效图形句柄 ishold() :hold命令处于on状态与否 isieee :是否使用IEEE算法 isinf() :是否无穷大 isletter() :数组元素是否是字
[嵌入式]
基于PWM控制的开关电源系统仿真研究
0 引 言 通过数学的方法,把小功率开关电源系统表示成数学模型和非线性控制模型,建立一种开关电源全系统的仿真模型,提高了仿真速度。Matlab是一个高级的数学分析软件,Simulink是运行在Matlab环境下,用于建模、仿真和分析动态系统的软件包,它支持连续、离散及两者混合的线性及非线性系统。 在Matlab 5.2中推出了电力系统工具箱,该工具箱可以与Simulink配合使用,能够更方便地对电力电子系统进行仿真。随着电源技术的发展,PWM控制的开关电源得到了广泛的研究和应用,如通信电源,机车电源等。这里以220 V高频开关电源为研究对象,建立模型。该电源采用脉宽调制控制方式,实现了减轻重量、缩小体积、提高精度等多项
[电源管理]
Matlab与数字示波器的通信
摘要: Windows环境下Matlab与TDS系列数字示波器的通信过程,给出了相关的通信程序,并在Matlab中对示波器读取的波形数据进行了频域处理。从而表明它们之间的通信在数字信号处理方面具有重要的实际意义。
关键词: Matlab 串行通信 示波器 数字信号处理
Tektronix公司的TDS系列数字实时示波器在国内已经得到广泛的应用,与其配套的扩展模块TDS2CM和TDS2MM模块具有与外部设备双向通讯的能力,可直接与打印机、微机连接,使波形的存储打印等工作变得十分方面,其中TDS2MM还具有FFT功能,可以对波形进行实时的频谱分析。同机配送的Wavestar软件提供了PC机与示波器双向
[应用]
有源模拟滤波器的快速协同设计方法
摘要:为了解决有源模拟滤波器传递特性函数设计中手工计算方法复杂、时间长,查表法精度不高的问题,提出了一种快速协同设计方法,该方法先通过在MATLAB环境下将基于频率变换的有源模拟滤波器传递函数设计方法程序化,之后只需给出滤波器电压衰减设计指标和边界频率即可快速获得滤波器传递函数或其二阶级联传递函数中各多项式的系数并在此基础上进行电路综合,大大缩短了设计时间,最后通过EDA工具Pspice对其综合的电路进行性能指标的仿真,进一步验证和完善设计方案,为电路实现的可行性提供了可靠的保障。仿真实验结果表明协同设计方法快速、直观、准确,大大提高了设计效率,对有源模拟滤波器特别是高阶滤波器的设计具有很好的实际指导意义。 关键词:有源模
[工业控制]
基于LabVIEW和Matlab混合编程的小波去噪方法
信号降噪是信号处理领域的经典问题之一。传统的降噪方法主要包括线性滤波方法和非线性滤波方法,滤波器在工作时对信号进行筛选,只让特定频段的信号通过。当信号中的有用成分和噪声成分各占不同频带,可以将噪声成分有效除去。但如果信号和噪声的频谱重叠,则经典滤波器将不起作用。这些滤波器按滤波的频段可分为高通、低通及带通滤波器,根据设计滤波器的思想可以把滤波器分为巴特沃斯滤波器、贝塞尔滤波器、椭圆滤波器及切比雪夫滤波器等。
此外,传统的滤波器降噪方法的不足在于使信号变换后熵增加,无法刻画信号的非平稳性并且无法得到信号的相关性。为了克服上述缺点,采用小波变换来解决信号降噪的方法应用越来越广泛。但是,由于小波变换数学理论较深,对于初学者而言,使用
[电源管理]
MathWorks 宣布 MATLAB 与 NVIDIA TensorRT 集成来加快人工智能应用
MathWorks于2018年4月11日宣布 ,MATLAB 现在可通过 GPU Coder 实现与 NVIDIA TensorRT 集成。这可以帮助工程师和科学家们在 MATLAB 中开发新的人工智能和深度学习模型,且可确保性能和效率满足数据中心、嵌入式应用和汽车应用不断增长的需求。 MATLAB 提供了一个完整的工作流程来快速训练、验证和部署深度学习模型。工程师可以使用 GPU 资源,而无需额外编程操作,因此可以专注于应用本身而不是性能调优。 NVIDIA TensorRT 与 GPU Coder 的全新集成使得可以在 MATLAB 中开发深度学习模型,然后以高吞吐量低延迟的方式部署在 NVIDIA GPU 上运行
[嵌入式]
在Matlab中实现数字通信FPGA硬件设计
近年来,在数字通信、网络、视频和图像处理领域,FPGA已经成为高性能数字信号处理系统的关键元件.FPGA的逻辑结构不仅包括查找表、寄存器、多路复用器、存储器,而且还有快速加法器、乘法器和I/O处理专用电路.FPGA具有实现高性能并行算法的能力,是构成高性能可定制数据通路处理器(数字滤波、FFT)的理想器件.如Virtex-II Pro FPGA包含高性能的可编程架构、嵌入式PowerPC处理器和3.125Gbps收发器等. 但是,FPGA在数字信号处理领域的广泛应用受限于几个因素.首先,DSP开发人员不熟悉硬件设计,尤其是FPGA.他们使用Matlab验证算法,运用C语言或汇编语言编程,通常不会使用硬件描述语言(
[嵌入式]