基于LABVIEW的多功能滤波器设计.docx
- 文档编号:1371806
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:16
- 大小:319.70KB
基于LABVIEW的多功能滤波器设计.docx
《基于LABVIEW的多功能滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于LABVIEW的多功能滤波器设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于LABVIEW的多功能滤波器设计
摘要
目前,在电子测量和自动化控制领域,虚拟仪器技术取得了巨大的发展。
虚拟仪器是一种功能意义上的测量和控制仪器,是具有仪器功能的软件、硬件的组合,从而实现各种传统仪器的功能。
本文叙述了虚拟仪器开发平台LabVIEW的特点,并给出了软件设计方案。
开发了基于LabVIEW的多功能滤波器,重点讲述了各个功能模块的软件设计,并利用该滤波器对模拟信号进行了滤波和频谱分析,结果较为满意。
在开发虚拟仪器的同时,掌握了LabVIEW编程语言,对虚拟仪器的构成、实现手段和开发方法有了一定的认识。
该系统操作简单,界面友好,功能多,并有很好的滤波、分析精度等优点。
关键字:
虚拟仪器;LabVIEW;滤波器;频率
1绪论
LabVIEW是一种基于“图形”方式的集成化程序开发环境,是目前国际上唯一的编译型图形化编程语言,LabVIEW开发环境具有一系列优点,从流程图式的编程,不需要预先编译就存在语法检测和调试过程使用的数据指针,到其丰富的函数、数值、信号处理和设备驱动等功能,应用LabVIEW进行滤波器设计,效率高,操作简单,并能对误差精度进行实时调整,把传统仪器利用LabVIEW用软件的方法来实现,开发周期短,易于维护和升级,可以设计出传统仪器所不能比拟的虚拟仪器,“软件就是仪器”——这就是虚拟仪器技术的精髓。
虚拟仪器已经为越来越多的人所使用和接受,因为虚拟仪器系统更快速简捷和方便,也可以节省硬件资源。
通过虚拟滤波器设计,可对虚拟仪器有更深的理解和领悟,也为以后进行更进一步的研究提供了基础。
我的设计题目是基于LabVIEW的多功能滤波器设计。
我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。
在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算很难在短时间完成设计。
这次利用LabVIEW设计的滤波器则不需要再靠公式计算,只要通过在前面板通过下拉菜单进行调解就可以设计出最优化的滤波器了。
了解LabVIEW编程所需的基础知识,学习LabVIEW的基本使用方法,复习数字信号处理的所学知识,运用LabVIEW设计一个虚拟的数字滤波器,使其能产生基本的带有噪声的模拟信号,或是能通过数据采集卡采集信号输入到微机里,并能使用户通过在前面板调节按钮,变换参数产生想要的滤波器,来对所产生的信号或从外界输入的信号进行滤波,并能对信号进行频域分析。
然后通过显示面板来显示滤波前后的信号及频域分析的信号。
滤波器的总体设计方案
我设计的题目是基于LabVIEW的多功能滤波器设计。
如图9为总体设计方案的示意图。
图9总体设计示意图
通过软件LabVIEW设计一个虚拟的数字滤波器,使其能产生基本的带有噪声的模拟信号,或是能通过数据采集卡采集信号输入到微机里,并能使用户通过在前面板调节按钮,变换参数产生想要的滤波器,来对所产生的信号或从外界输入的信号进行数字滤波,这里的滤波器可以根据用户的需要进行选择,可以找出最适合的滤波器。
我设计的滤波器包括FIR滤波器,IIR滤波器以及小波去噪。
其中这三大类滤波器分别有一些参数可调,例如IIR滤波器滤波的窗函数。
进行完滤波后还能对信号进行各种频谱分析。
然后通过显示面板来显示滤波前后的信号及频谱分析的信号。
滤波器的各个模块的设计
我设计的滤波器的模块有信号发生模块,滤波模块,以及频谱分析模块。
信号发生模块
信号发生模块是信号有两种,一种是通过基本函数发生器产生基本波形,包括正弦波、方波、三角波、锯齿波四种;一种是用户通过编写公式来产生想要的波形。
然后分别叠加噪声信号,以此来模拟现实中的信号。
其中噪声的类型有均匀白噪声、高斯噪声、周期性随机噪声、泊松噪声。
噪声的幅值也可以调节。
如图10是信号发生模块流程图。
图10信号发生模块流程图
其中需要注意的是采样频率的选择,不然的话会出错,系统不能运行。
根据奈圭斯特采样定理,采样频率应大于或至少等于信号截止频率的2倍,以保证数字化后的信号数据不丢失原信号的特性。
但是奈圭斯特采样定理假设有一个理想的低通滤波器来恢复信号,并且被采样的信号的频带围有限,这些条件在实际使用中是很难实现的,所以它只在理论上成立。
对同一信号以不同的采样率采集得到的结果是不同的,显然采样频率越高,采集信号越接近真实信号,但是高采样频率意味着对存储空间和存的更高要求,工程上用到的采样频率常常是信号最高频率的5~10倍。
如图11所示为信号发生模块流程图对应的前面板。
图11输入信号参数选板
滤波去噪模块
图12滤波去噪模块流程图
图13滤波参数选板
滤波去噪模块的流程图如图12所示,信号的滤波去噪就是通过这个模块来实现的。
图13为滤波参数选板,第一个布尔控件是来选择是否要进行滤波,当指示灯亮时就进行滤波了。
布尔控件下面的叫做菜单下拉列表,是用来选择滤波器的类型的。
再往下的三个框分别是IIR滤波器规,FIR滤波器规,小波去噪规,通过调节文本下拉列表可以搭配出最好的滤波器。
其中有三点需要说明一下,一是Case结构,二是LabVIEW调用Matlab函数。
三是小波去噪的相关容。
(1)Case结构是执行条件语句的一种方法。
这类似于常规的文本编程语言中常见的if…Then…Else语句。
从“函数”选项板的“控制过程执行”子选项板中选择Case结构并将其放置在框图上,并使其边框包围所希望的对象;也可以先将Case结构放置在框图上,然后再根据需要调整其大小并将对象拖拽到结构部[12]。
Case结构可有多个子框图,这些子框图就像一叠卡片,一次只能看到一。
在Case结构边框的顶部使子框图标识符。
子框图标识符可以是数字,布尔,字符串或枚举型控件。
在枚举型控件就是无符号字节、无符号字或无符号长整型,如图14、图15所示。
可将选择器器端子放在Case结构左边框上的任何地方。
选择器标签自动调整为输入的数据类型。
例如,如果选择器连接的值从枚举型改变到布尔型,那么对应的0和1分支将分别改变成FALSE和TRUE。
需要注意的一点是如果选择器也值与连接到选择器端子对象的类型不同,那么选择器值以红色显示,并且置VI于中断状态。
隧道是结构上的数据出入口。
可将Case结构外的端子连接到结构的端子。
连接后,结构的边框上将出现矩形框——表示隧道,见图12。
也可通过将外部端子连接到结构边框来创建隧道,然后再进一步将端子连接到部端子。
隧道也可在其他结构中找到,例如顺序结构,While循环和For循环。
所有分支都能使用输入隧道的所有数据。
图14布尔型Case结构
图15多帧数字Case结构
如图12所示,在滤波去噪模块中,用到了三个Case结构。
最外围的是一个布尔型的,通过它来选择是否进行滤波;中间的那个Case结构是一个枚举型的,通过它来选择滤波器的类型;最里面的那个Case结构也是枚举型的,当滤波器是小波滤波器时,通过这个Case可以选择不同的小波基来进行滤波。
(2)LabVIEW调用Matlab函数,会用到Matlabtoolbox或采用Matlabscript这时需要安装Matlab,不可以脱离Matlab环境。
Matlab是科学和工程可视化计算领域广泛流行的交互式编程环境。
如果涉及到比较复杂的数学运算,则可以调用Matlab的脚本文件来实现。
Labview调用Matlab的功能是通过Matlab节点来实现的。
可以从“函数”选项板的“数学”→“脚本与公式”→“脚本节点”来访问Matlab脚本节点。
如图16所示为Matlab节点流程图。
图16Matlab节点流程图
向Matlab节点输入Matlab文件的方法有两种:
一种是直接在框图写入文件代码,另一种是在Matlab节点的边框上单击鼠标右键,在弹出的快捷菜单中选择“导入”命令选项,在弹出的对话框中输入Matlab脚本文件即可。
Matlab脚本节点把流程图涉及的变量分为两大类:
输入变量和输出变量。
顾名思义,输入变量是指需要用户定义的变量;输出变量包括公式节点传递给其他节点的变量。
创建变量的方法很简单,在公式节点的流程图上单击鼠标右键,选择“添加输入”命令或者“添加输出”命令即可。
输入变量的边沿是细线,输出变量的边沿是粗线,它们的分布位置可以是公式节点边框上的任意位置,如图16所示。
在Matlab中,用户一般不用指定数据类型,所有输入变量会有缺省的类型,而在LabVIEW里面,Matlab节点并不能够判断数据类型,因此用户必须要为每个数据变量指定一个类型。
给Matlab节点变量定义类型的方法是:
在变量上面单击鼠标右键,在弹出的快捷菜单中选择“选择数据类型”命令选项,就会出现Matlab中的各种数据类型名称,然后按照事先在Matlab中定义的类型给每个变量选择合适的数据类型,则系统就会把变量变成相应的LabVIEW的类型[12]。
如图12所示,当在第二层的Case结构中选择小波去噪时,此时就用到了Matlab脚本节点,这里采用了第一种向Matlab节点输入Matlab文件的方法,即直接在框图写入文件代码。
这里调用了小波分析工具箱函数wden,它的功能是用小波进行一维信号的自动消噪。
这里的小波基我列举了6种供选择,所以使用了6个Matlab脚本节点,在图12中只能看到一个,在Case结构的每一帧中有一个。
在公式节点的流程图上单击鼠标右键添加输入s和n,同理添加输出xd,下表为它们的控件类型、数据类型和功能。
最需要注意的就是数据类型,如果数据类型不对,会出现错误,“运行”的箭头是断开的,双击断开的箭头会弹出错误提示,可以按错误提示来改正,才能运行。
表1Matlab脚本节点的输入,输出
名称
控件类型
数据类型
功能
输入波形(s)
1-DArrayofReal
输入波形
输出波形(xd)
WaveformGraph
1-DArrayofReal
输出波形
分解层数(n)
DigitalControl
Real
显示小波去噪的分解层数
基小波选择
MenuRing
显示小波消噪使用的基小波
(3)小波去噪的相关知识。
小波分析属于时频分析的一种。
传统的信号分析时建立在傅立叶变换的基础之上的,由于傅立叶分析使用的是一种全局的变换,要么完全在时域,要么完全在频域,因此无法表述信号的时频局域性质,而这种性质恰恰是非平稳信号最根本和最关键的性质。
与标准傅立叶变换相比,小波分析中所用到的小波函数具有不唯一性,即小波函数具有多样性[19]。
但小波分析在工程应用中,一个十分重要的问题是最优小波基的选择问题,这是因为用不同的小波基分析同一个问题会产生不同的结果。
常用的小波函数介绍:
Daubechies(dbN)函数的小波函数和尺度函数的有效长度为2N-1,小波函数消失矩阶数为N。
dbN大多数不具有对称性;对于有些小波函数,不对称性是非常明显的。
正则性随着序号N的增加而增加。
该函数具有正交性。
Daubechies系中的小波基记为dbN,N为序号,且1,2…,10。
coiflet(coifN)函数也是由Daubechies构造的一个小波函数,它具有coifN(1,2,3,4,5)这一系列。
Coiflet具有比dbN更好的对称性。
从支撑长度的角度看,coifN具有和db3N及sym3N相同的长度;从消失矩的数目来看,coifN具有和db2N及sym2N相同的消失矩数目。
Symlets(symN)小波系是由Daubechies提出的近似对称的小波函数,它是对db函数的一种改进。
Symlets函数系常常表示为symN(N=2,3,…8)的形式。
小波分析的应用很多,本设计中是用于信号消噪处理。
运用小波分析进行一维信号消噪处理是小波分析的一个重要应用之一,下面将其消噪的基本原理作一个简要的说明。
一个含噪声的一维信号的模型可以表示成如下的形式:
其中,f(i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LABVIEW 多功能 滤波器 设计