微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于LabVIEW平台的虚拟滤波器去除噪声VI设计

基于LabVIEW平台的虚拟滤波器去除噪声VI设计

时间:10-10 来源:互联网 点击:

  引言

  在振动、声学、地震、通讯、雷达、控制系统和生物医学工程等广泛的科学技术领域中都对实际所观察的信号提出了滤波和频谱分析的要求。以数字形式对它们进行处理的内容,就构成了数字信号处理的基本研究内容。在虚拟仪器中滤波技术有着广泛的应用。从测试现场采集到的信号中包含有对数据处理有用的信号、无用信号和噪声,滤波的目的是从信号中提取有用的信号。在虚拟仪器系统中,将信号采集到电脑中,通常还需要利用软件完成复杂的分析和信号处理工作,LabVIEW 提供了大量的分析工具,成熟的算法,方便了软件的开发。基于此本文在PC机LabVIEW软件中模拟产生一个接近于实际信号的带噪声的信号,生成一个带噪声的信号发生装置。选择滤波速度较快的无限冲激响应滤波器IIR,对虚拟滤波器去除噪声进行设计。

  1、设计思路

  在信号传输过程中,经常会混入高频噪声,噪声的能量甚至会超过信号能量。因此接收端收到信号后,通常首先要进行低通滤波,然后才能对信号做进一步处理。 设计的流程图图1所示:

  2.虚拟滤波器去除噪声VI设计原理

  2.1 生成滤波器的自选信号

  自选信号是信号发生器发出的信号加上噪声信号来实现的。在信号发生器部分应用Basic Function Generator.vi产生正弦波、方波、三角波、锯齿波等标准信号,噪声部分我使用了Uniform White Noise Waveform.vi生成均匀分布的伪随机的白噪声,然后一起相加生成自选信号。

图1 虚拟滤波器去除噪声VI流程图

  在本程序中,设定Fs(采样频率)和#s(采样点数)均为1000,根据奈奎斯特抽样定理生成信号的频率小于Fs/2,频谱就不会失真,所以Basic Function Generator.vi生成信号的频率最好不要超过500Hz。但经过试验在LabVIEW中采样频率如果越接近Fs/2频谱很容易失真。所以Basic Function Generator.vi生成信号的频率一定要根据实际使用情况选择。

  噪声的幅度值在[-a,a]之间,a是幅度的绝对值,本次设的是默认值0.10。由于生成的噪声输出信号要和Basic Function Generator.vi的生成信号相加,所以Sampling info(采样信息)和Basic Function Generator.vi的Sampling info一致。输出的signal out同样也是一个簇,包含了to,Y,dt三个数据,各个数据的作用和Basic Function Generator.vi中的signal out是一样的。Basic Function Generator.vi和Uniform White Noise Waveform.vi的signal out输出的信号各自经过一个get waveform component.vi得到波形成分Y。最后两者生成的信号经过get waveform component.vi后再经过一个Add得到模仿的真实信号,如图2所示,在连线时可以将两者的error in(out)相连以备最后总程序产生报错系统。

图2 自选信号部分程序图

  2.2. 滤波部分

  滤波部分是本程序的核心部分。选用滤波速度快,对相位没有要求的IIR滤波器,本程序采用Butterworth滤波器和Chebyshev滤波器。巴特沃斯滤波器拥有最平滑的频率响应,在截断频率以外,频率响应单调下降。在通带中是理想的单位响应,在阻带中响应为零,过渡带的陡峭成度正比于滤波器的阶数,所以通过提高阶数可以明显的提高滤波效果。并且可以选择低通滤波,高通滤波,带通滤波或者带阻滤波,用户可以根据自己的滤波要求选择合适的滤波模式。这个功能的实现是用一个case选择结构完成的。

  在程序的前面板,用一个下拉框表来实现选择不同滤波器模式的功能,总共设置了九种不同的模式,当我们要观察自选信号不经过滤波的形状时我们可以选择关闭滤波器,当我们观察在不同滤波器下的滤波效果时可以切换到不同的模式观察,滤波部分的程序图表如图3所示。

图3 滤波部分

  2.3.显示部分

  显示部分是本程序面向用户的一个关键部分,最终的成果是通过它呈现出来。我们要显示的波形图分为滤波前的自选信号和滤波后的信号。

  时域信号的显示:从滤波部分以数组方式输出的信号即为滤波结果的时域信号,这里通过一个Build Waveform.vi来恢复波形并连接Waveform Graph(波形图)这样就可以在前面板上显示滤波后的信号波形了。在本程序中,Y就是从滤波器输出的数组元素,dt是在生成自选信号时设定的Fs的倒数。to为默认值0,相当于从坐标轴的原点开始显示波形。
  频域信号的显示:这里主要用到的是Real FFT.vi


  Real FFT.vi:这个VI计算输入序列的快速傅立叶变换(FFT)或离散傅立叶变换(DFT)。如果输入序列的长度为2的幂,Real FFT.vi将执行FFT程序;如果输入序列的长度不是2的幂,则会调用一个有效的DFT程序。本程序中将滤波器输出的数组输入到Real FFT中进行快速傅立叶变换,这时候的输出是复数数组,才通过一个Complex To Polar.vi得到信号的幅度分量。显示部分的程序如图4所示:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top