基于Matlab GUI的模拟带通滤波器的设计

最新更新时间:2010-07-20来源: 现代电子技术关键字:模拟带通滤波器  Matlab  GUI  回调函数  代码优化 手机看文章 扫描二维码
随时随地手机看文章

0  引  言

    模拟带通滤波器在信号的检测和传输过程中起着很重要的作用,但在传统模拟带通滤波器的设计过程中需要大量繁琐的数值计算,如果手工计算则费时费力。也有许多公司开发了相关的滤波器设计软件,如AnsoftDesigner,Filterlab等,但是它们大多数使用起来不容易上手,而且价格比较昂贵。Matlab中的图形界面编程环境GUIDE为用户开发软件界面提供了强有力的工具。在图形界面编程环境GUIDE下,设计好滤波器的设计工具界面后,对界面上各个控件的回调函数进行编写就能设计出交互式滤波器的分析设计软件。

    本文在Matlab GUI基础上设计了针对Chebyshev型模拟带通滤波器的设计分析软件。用户在使用时只需输入要设计的滤波器设计指标值,选择要设计的滤波器类型,即可在分析滤波器特性时只需选择相应菜单就能得出对应的特性。该工具解决了用户在设计Chebyshev型模拟带通滤波器时大量繁琐的数值计算,不仅可以作为研究设计Chebyshev型模拟带通滤波器的辅助工具,还可以作为设计滤波器等相关课程的辅助教学软件。

1 模拟带通滤波器的设计理论

    目前,模拟高通滤波器、带通滤波器和带阻滤波器的设计方法都是先将要设计的滤波器技术指标通过某种频率转换关系转换成模拟低通滤波器的技术指标,并依据这些技术指标设计出低通滤波器的转移函数,然后再依据频率转换关系变成所要设计的滤波器的转移函数。工程实际中,设计高通、带通、带阻滤波器的常用方法是借助低通原型滤波器,经频率变换和元件变换得到。

    对于模拟带通滤波器的设计,首先是将要设计的模拟带通滤波器的技术指标通过频率变换关系,转换成模拟低通滤波器的技术指标,其次根据这些技术指标设计出低通切比雪夫滤波器转移函数,最后再依据频率转换关系变成模拟低通切比雪夫滤波器,其具体设计流程如图1所示。

2 Matlab GUI设计工具简介

    在Matlab中,图形用户界面(graphical user interface,GUI)是Matlab中一个专用于GUI程序设计的向导设计器,而GUI是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交互的有效工具和方法。通过GUIDE可以很方便地设计出各种符合要求的图形用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。GUI设计既能以基本的Matlab程序设计为主,也能以鼠标为主,利用GUIDE工具进行设计,也可综合以上两种方法进行设计。GUIDE主要是一个界面设计工具集。Matlab将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为相应方式的设置方法。GUIDE将用户保存设计好的图形用户界面保存在一个FIG资源文件中,同时自动生成包含图形用户界面初始化和组件界面布局控制代码的M文件,这个M文件为实现回调函数的编写提供了一个参考框架。FIG文件是一个二进制文件,包含系列化的图形窗口对象。所有对象的属性都是用户创建图形窗口时保存的属性。该文件最主要的功能是对象句柄的保存。M文件包含GUI设计、控制函数及控件的回调函数,主要用来控制GUI展开时的各种特征。该文件基本上可以分为GUI初始化和回调函数2个部分,控件的回调函数可根据用户与GUI的具体交互行为分别调用。

3 软件界面设计

    在软件设计时,通过文本编辑框控件来接收用户输入的滤波器设计指标值,考虑到分析滤波器时输出的参数较多,如果用一一对应的文本框来接收输出的参数值,则使软件界面在设计中难以布局,并影响了界面的美观,所以只用一个文本编辑框控件来实现多个参数的输出。在滤波器类型选择控件方面,因为只用2种滤波器来进行选择设计,所以使用两个单选按钮,以实现滤波器类型的选择;在滤波器特性曲线分析和参数计算方面,利用图形界面设计工具GUIDE提供的菜单编辑器来设计出分析、计算菜单,并加入相应的功能子菜单。绘制输出滤波器的特性曲线时使用一个坐标轴来实现各个特性曲线的绘制,这样可以使软件界面简洁明了。最后对参数输入和参数输出区进行功能区域划分,利用控件工具箱中的框架按钮,将参数的输入与输出区划分,利用控件工具箱中文本标签对上面相应控件的功能命名。将设计好的界面文件保存运行,就可以看到软件在运行时显示出的实际效果。设计的界面如图2所示,设计出的软件界面由4个部分组成:菜单栏、参数输入区、参数输出区、绘图区。

    其中,设计的分析菜单包括滤波器的幅频特性、相频特性、阶跃响应、脉冲相应和零极点子菜单,计算菜单包括阶数、零点、极点、增益、转移函数(分子)和转移函数(分母)子菜单。

4 应用程序M文件的设计

    GUI包含许多可以使软件终端与用户界面进行交互的用户界面组件,GUI实现的任务之一就是控制组件如何响应用户的行为。Matlab通过创建应用程序M文件为GUI控制程序提供一个框架。所有代码(包括回调函数)都包含在应用程序M文件中,即完成了图形界面的设计后,应用程序设计的主要工作是控件回调函数的设计。下面讨论程序设计流程及控件回调函数的设计。

4.1  程序设计流程

    软件运行时,系统首先初始化。接着判断输入的滤波器参数及其类型是否正确,不正确重新输入,正确即可选择相应的功能菜单,实现相应的功能。程序具体流程图如图3所示。

4.2  控件回调函数设计

    该软件的控件回调函数包括“确定”按钮控件回调函数、“清除”按钮控件回调函数、滤波器类型选择控件回调函数、“分析”菜单下各子菜单功能回调函数和“计算”菜单下各子菜单功能控回调函数的设计。限于篇幅,仅讨论“分析”菜单下各个菜单功能回调函数和“计算”菜单下各功能回调函数的设计。

4.2.1  “分析”菜单下的各子菜单功能回调函数设计

    在“分析”菜单下应包含“幅频特性”、“相频特性”、“阶跃响应”、“脉冲响应”、“零极点图”子菜单,分别用来实现幅频特性曲线、相频特性曲线、阶跃响应、脉冲响应、零极点图的绘制。其中,“幅频特性”菜单用来绘制给定参数的滤波器的幅频特性曲线,在程序设计过程中首先使用Matlab中的axes函数,得到坐标轴控件的句柄,以便绘制特性曲线。在得到用户输入的设计指标值后,利用if else语句来判断用户所选择的是哪一种滤波器类型,在阶数和截止频率的计算中,利用信号处理工具箱中的cheblord和cheb2ord函数来计算,再用chebyl和theby2函数来计算转移函数的分子、分母,设计出用户所要求的滤波器。在计算滤波器幅值时,利用freqs函数计算出转移函数的响应。在绘制滤波器幅频特性曲线时,利用plot函数来完成,即在plot函数的参数中设置相关值,以完成幅频特性曲线的绘制。为了更好地观察到滤波器的设计是否达到相关的设计要求,利用line函数在坐标上标识出通带最大损耗、阻带最小损耗等点,这样可以直观地观察到所设计出的滤波器是否符合用户提出的要求,其具体程序如下:


    在“分析”菜单下“相频特性”子菜单用来绘制给定参数的滤波器的相频特性曲线。相频特性曲线的在程序设计过程与幅频特性曲线的程序设计比较相似,只是在求得幅值后加一相位计算函数angle来求相位角。在plot函数中将纵坐标参数换为求出的相位角变量即可完成相频特性曲线的绘制。

    对于“阶跃响应”回调函数的程序设计,要将计算出的阶跃响应绘制在坐标轴控件界面上,不能利用信号处理工具箱中step函数直接求得。因为若用该函数会使绘制出的阶跃响应曲线在一个新打开的窗口上,而软件在界面设计时,所求滤波器的所有特性曲线都共用一个坐标轴来绘制;在程序设计时利用tf函数将计算出的滤波器转移函数的分子、分母系数生成转移函数,再利用阶跃响应函数step对求出的转移函数变量求解出阶跃响应值;最后利用plot函数绘制出所求滤波器的阶跃响应曲线,这样即可完成阶跃响应曲线在坐标轴上的绘制。

    “脉冲响应”回调函数的程序设计与“阶跃响应”回调函数的程序设计十分相近,只是将上述程序中的阶跃响应函数step换成脉冲响应函数impluse,并在对应的时间做相应的调整即可完成脉冲响应回调函数的编写。

    “零极点图”回调函数的程序设计与以上两个子菜单的回调函数设计大致相同,程序的设计结构与前面几个菜单的回调函数的设计基本一致。在求得转移函数的分子、分母系数后,利用tf2zp函数求出所设计出的滤波器的零点、极点、增益,再用real函数和imag函数求出零点、极点的实部和虚部,最后利用绘图函数plot绘制出系统的零极点图。

4.2.2  “计算”菜单下各功能回调函数的编写

    “计算”菜单下包含了“阶数”、“零点”、“极点”、“增益”、“转移函数分子系数”。其中,“转移函数分母系数”菜单分别用来计算所设计的滤波器阶数、零点、极点、增益、转移函数分子系数、转移函数分母系数;“阶数”菜单用来计算所输入参数滤波器的阶数,并将它输出到输出参数框。在程序的设计中,首先判断用户所选择滤波器的类型,然后将计算出的参数用set函数输出到输出文本区。因为极点、零点值可能为复数,而文本编辑框的数据类型为数值型,所以在输出时,利用num2str函数将得到的值进行格式转化,以防止出现复数值只能显示出实部来。“阶数”菜单程序如下:


    “阶数”、“零点”、“极点”、“增益”、“转移函数分子系数”、“转移函数分母系数”子菜单中回调函数的程序设计基本一样,只是在输出值时参数名称不同。将阶数子菜单程序中set语句的“n”换成相应菜单对应的变量名即可实现相应的功能。在完成了各个控件的回调函数编写后,对软件的功能进行逐一调试,以保证每项功能都能正确响应用户的操作。

4.3  代码优化

    在调试完软件的各项功能后,应对所设计的软件代码进行优化。打开软件中使用次数比较多的程序段,利用Matlab中的程序执行耗时剖析功能函数profile指令对程序中执行耗时情况进行分析,之后进行改进,以提高执行效率。打开设计出的软件主程序M文件,对已经优化过且使用次数较多的程序段,应另外编写成函数形式,供需要的控件回调函数调用,在需要调用的相关控件回调函数下只需要填写相应的函数名称就能实现其相应的功能。

    对于在界面设计时没有用到的控件,对应生成的代码可以直截删去。最后在Matlab环境下,运行该程序,即可实现模拟带通滤波器的设计和性能分析。利用该软件对模拟带通滤波器进行了分析,其部分结果如图4、图5所示。

    图4为切比雪夫2型模拟带通滤波器的幅频特性和极点分析计算结果;图5为切比雪夫1型模拟带通滤波器零极点分析计算结果。分析结果表明,该软件有助于模拟带通滤波器的分析设计。

5  结  语

    该文在分析模拟滤波器设计理论的基础上,设计了基于Matlab GUI的模拟带通滤波器设计软件。利用该软件可以分析滤波器的幅频特性、相频特性和零,极点分布特性等。如何将该课题的研究与实际的模拟滤波器设计整合在一起,将是下一步面临的重要工作。同时也可利用该设计方法设计功能更大的滤波器分析设计软件,使该软件具有更大的实用价值。

关键字:模拟带通滤波器  Matlab  GUI  回调函数  代码优化 编辑:金海 引用地址:基于Matlab GUI的模拟带通滤波器的设计

上一篇:基于RC正弦波振荡电路的电子琴设计
下一篇:Vernier阳极探测器及其电子读出电路的设计

推荐阅读最新更新时间:2023-10-12 20:17

基于Matlab的CDMA系统功率控制算法研究
  CDMA 移动通信系统具有抗干扰能力强,保密性好,容量大等优点,受到广泛的关注。CDMA是利用码序列的正交性和准正交性区分不同用户,它是在同频、同时的条件下,各个接收机根据信号码型之间的差异分离出需要的信号。由于CDMA系统中同一频率在所有的小区重复使用,CDMA中的干扰特别严重,若没有先进的功率控制技术,尽可能减小用户的背景干扰,就会产生严重的误码现象。随着用户数的增加,信号的信噪比急剧下降。当低于一定门限时,就可能发生通信中断。由于 CDMA系统存在传输衰减、多址干扰、远近效应等问题,系统容量受限于用户间的相互干扰,因此,必须对功率进行控制。本文主要针对CDMA系统中的功率控制算法进行研究。   1功率与容量的关系
[嵌入式]
高频斩波式串级调速系统的建模研究
  1 引言   串级调速是一种经典的高效节能调速方案 ,而高频斩波串级调速系统是在传统串级调速理论基础上,应用现代电机技术、电力电子技术和计算机控制技术的先进成果而产生的新一代高效调速技术。该技术以控制转子低电压回路进而控制高压电机,以变流转差功率进而控制大功率电机,并以高频斩波器实现PWM脉宽调制替代传统串级调速系统的逆变角调节,具有控制容量小、控制电压低,调速性能优良和节能效率高、谐波功率小,装置尺寸小,运行条件宽松等优点,在高压大容量电机节能调速上具有突出的优势 。   在实际工程设计中,常需进行计算机仿真研究,以获得指导性结论或对工程计算参数进行验证。在仿真技术中,常采用的数学模型形式有:传递函数、开关函数或
[工业控制]
基于uc/os-ii的嵌入式GUI研究与应用
1 引言 人机界面是嵌入式系统的重要组成部分,当前比较流行的GUI主要有:Nano-X,microwindows, minigui,QT/Embedded,OpenGUI等,普遍采用客户/服务器结构,多线程概念,主要用于嵌入式Linux系统中。uc /os-ii是一个简单、高效的嵌入式实时操作系统内核,凭借其源代码开放,系统内核可剪裁等特点,被广泛应用到各种嵌入式系统中。但是,uc/os- ii只是一个实时多任务内核,不具有现代操作系统的线程,客户/服务器机制,上述GUI不能方便的运行在uc/os-ii上。 uC/GUI是一个源代码开放的GUI,可以实现Windows风格的图形界面。微型是其最大的特点,占用很小的
[单片机]
基于uc/os-ii的嵌入式<font color='red'>GUI</font>研究与应用
为OLED屏增加GUI支持5:图片控件
环境: 主机:WIN10 开发环境:MDK5.13 MCU:STM32F103 说明: 本文定义了图片控件。OLED屏是单色屏,所以本图片控件支持的是单色BMP图像。 将普通图像转换为单色图片可以用工具BmpCvt.exe。将转换后的BMP图像转换为hex文件,可以用Bin2C.exe。这两个工具都是emwin自带工具。 源代码: 转换后的hex文件再整理成如下的示例格式: battery0.c /** * Copyright (c), 2015-2025 * @file battery0.c * @brief 电池0格图标 * @author jdh * @date 2015/11/9 *
[单片机]
为OLED屏增加GUI支持1:OLED驱动
为OLED屏增加GUI支持1:OLED驱动 标签: gui oled 2015-12-25 10:51 1478人阅读 评论 (1) 收藏 举报 分类: STM32(43) 版权声明:本文为博主原创文章,未经博主允许不得转载。 为OLED屏增加GUI支持1:OLED驱动 本文博客链接: http://blog.csdn.net/jdh99 ,作者:jdh,转载请注明. 说明: 一个可穿戴项目中使用到0.96寸OLED屏,这是一种小尺寸的单色屏,不需要复杂的界面。移植了emwin发现小屏幕单色屏很不合适,控件显示不尽如人意,占用的flash又太大。所以我自己编写一个轻量级的GUI。 GUI简介: 目前已有控件: 1.
[单片机]
为OLED屏增加<font color='red'>GUI</font>支持1:OLED驱动
matlab坐标变换
cart2pol 笛卡儿坐标变换为极坐标或圆柱坐标 cart2sph 笛卡儿坐标变换为球坐标 pol2cart 极坐标变换为笛卡儿坐标 sph2cart 球坐标变换为笛卡儿坐标 时间和日期 calendar 返回日历 clock 当前时间 cputime 从启动经过的cpu时间 date 日期 datenum 转换成连续日期数 datestr 日期字符串 datevec 日期分隔部分 eomday 一个月的日期 etime 经过的时间 now 当前的日期和时间 tic, toc 秒表定时器 weekday 星期几
[嵌入式]
Rightware发布Basemark® GUI免费版
艾斯堡,芬兰—2012年8月13日--(美国商业资讯)--Rightware®, 嵌入式用户界面技术的领先业者,今天宣布了一款业界标准图形用户界面消费者版Basemark® GUI Free的发布。针对安卓设备的GUI Free今天就可在Google Player下载,而iOS 版本则在不久的将来发放于苹果应用商店。原版Basemark® GUI是一款最为广泛采用的测量手机、平板电脑和其它嵌入式设备的基准软件。 Basemark® GUI Free 为应用开发者和消费者提供一款真正的图形用户界面基准,为其测量设备硬件平台在图形用户界面环境下跑得多快。Basemark® GUI Free衡量设备的GPU聚焦Vertex Str
[测试测量]
基于Matlab的IIR数字滤波器设计方法比较及应用
  0 引言   数字滤波器(Digital Filter)是指输入、输出都是离散时间信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。数字滤波器在数字信号处理中起着非常重要的作用,在信号的过滤、检测与参数的估计等方面,是使用最为广泛的一种线性系统。   实现数字滤波器的方法有两种,一是采用计算机软件进行,就是把所要完成的工作通过程序让计算机来实现;二是设计专用的数字处理硬件。这个地方主要用到的就是第一种方法。即是用Mafiab提供的信号处理工具箱来实现数字滤波器。   Matlab信号处理工具箱提供了丰富的设计方法,可以使得繁琐的程序设计简化成函数的调用,只要以正确的指标参数调
[嵌入式]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved