第四课 分析软件
第一节 概述
LabVIEW的Advanced Analysis软件库包括数值分析、信号处理、曲线拟合以及其他软件分析功能。该软件库是建立虚拟仪器系统的重要工具,除了具有数学处理功能外,还具有专为仪器工业设计的独特的信号处理与测量功能。
除了Advanced Analysis软件库,NI公司还提供一些附加的分析工具库,借助这些分析软件包,LabVIEW可以具有更加强大的分析功能。这些分析工具库包括:
- 联合时频分析(Joint Time Frequency Analysis)工具箱:用于分析常规傅里叶变换不易处理的时-频特性。
- G Math工具箱:提供了扩展的数学功能,如公式分析、求根植、画轮廓线等。
- 数字滤波器设计工具箱
详细的情况请查阅相关资料。
在本课程中,用户可以学习如何建立一个简单实用的频谱分析仪,如何使用数字滤波器,如何执行简单的曲线拟合功能等。本课程需要使用LabVIEW完全开发系统。
第二节 高级分析功能程序
在LABVIEW 5.0以前的版本,高级分析程序库被安排在函数模板的一个名为Advanced Analysis的子模板中。而现在流行的LabVIEW 5.1版则把它分成两个子模板。
1)Signal processing子模板。其中包括:
- 信号发生。
- 时域信号。
- 频域信号。
- 测量。
- 数字滤波器。
- 窗函数。
2)Mathematics子模板。其中包括:
- 公式框节点。
- 1D and 2D Evaluation。
- 微积分(Calculus)。
- 概率和统计。
- 曲线拟合。
- 线性代数。
- Array Operations。
- 优化处理。
- Zeroes。
- 数字函数。
第三节 信号产生
该软件库可以为网络分析或仿真产生多种常用信号。它可以和NI公司的DAQ卡一起使用,以产生模拟输出信号。
在模拟电路范围,信号频率以Hz或周期来测量,但在数字系统中我们使用数字频率,它是模拟频率与采样频率之比,如下所示:
数字频率=模拟频率/采样频率
在许多信号产生子程序模块中,我们使用数字频率,因为难以确定采样频率。为了得到模拟频率输出,我们必须确定采样频率。如下面的练习所示:
练习4-1
目的:产生一个指定频率的正弦波。
前面板:
框图程序:
1. 验证上述框图程序,它使用了下面的子程序:
Sine Wave VI子程序(在Analysis>Signal Generation子模板)。在本例中,它以采样频率100Hz,产生有200个采样点的 Hz正弦波。
2.注意查看框图,可以看到在连接到Sine Wave.VI程序之前,信号频率已经被采样频率相除。也就是说,Sine Wave需要输入信号的数字频率。
3.运行此程序,在前面板缺省值的情况下,将出现5Hz的正弦波。
采样与混频(Aliasing):
在前面板把信号频率改为90Hz,再运行此程序。结果出现的信号频率却等于10Hz。
这种现象叫混频偏差(Aliasing),只在数字频率范围出现。著名的耐奎斯特采样理论已经说明,最高信号稳定频率等于采样频率的一半。在本例中,采样频率等于100Hz,所以最高信号频率为50Hz,如果输入频率大于50Hz,如本例中的90Hz,它将会偏差到((N×50)-90)Hz>0,即为(100-90)=10Hz,也就是说,采样频率为100Hz的数字系统不能区分10Hz和90Hz,20Hz和80Hz,51Hz和49Hz等等。
因此,在设计数字频谱系统时,我们必须保证不要让大于1/2采样频率的信号进入系统。一旦进入了,就没有办法清除它们。为了防止偏差出现,我们一般采用低通滤波器。在本例中,我们可以使用抗混频模拟低通滤波器滤除任何大于50Hz的信号。加了滤波器以后,当采样频率为100Hz的系统内出现10Hz信号时,我们就可以肯定它是10Hz而非90Hz。
(练习4-1结束)
第四节 信号处理
在许多应用场合,需要计算信号的频谱,Advanced Analysis程序库有许多这方面的功能模块程序。下面的例子讲述使用Amplitude and Phase Spectrum VI子程序来测量两个频率分量。
练习4-2
目的:计算一个信号的频谱分量。
前面板:
1.打开Compute Frequency Spectrum VI程序。输入信号混合了两个正弦波,一个为2Hz,另一个为10Hz。采样频率为100Hz,采样点为200个 10Hz的信号幅值为2伏。2Hz的信号幅值为1伏。
2.切换到框图程序。
框图程序:
1.框图程序如下次图所示,它使用了下面的子程序:
Amplitude and Phase Spectrum VI子程序(在Analysis>Measurement子模板)。在本例中,它计算信号的幅度有效值(RMS)。
2.运行程序。频谱图显示两个峰值,一个在2Hz,另一个在10Hz。2Hz波形电压有效值为0.717伏,10Hz波形电压有效值为1.414伏,分别对应其峰值1伏和2伏。
(练习4-2结束)
第五节 数字滤波器
数字滤波器用于改变或消除不需要的波形。它是应用最广泛的信号处理工具之一。两种数字滤波器分别是:FIR(有限脉冲响应)和IIR(无限脉冲响应)滤波器。FIR滤波器可以看成一般移动平均值,它也可以被设计成线性相位滤波器。IIR滤波器有很好的幅值响应,但是无线性相位响应。
带通、带阻与过渡带宽
带通指的是滤波器的某一设定的频率范围,在这个频率范围的波形可以以最小的失真通过滤波器。通常,这个带通范围内的波形幅度既不增大也不缩小,我们称它为单位增益(0dB)。带阻指的是滤波器使某一频率范围的波形不能通过。 理想情况下,数字滤波器有单位增益的带通,完全不能通过的带阻,并且从带通到带阻的过滤带宽为零。在实际情况下,则不能满足上述条件。特别是从带通到带阻总有一个过渡过程,在一些情况下,使用者应精确说明过渡带宽。
带通纹波和带阻衰减
在有些应用场合,在带通范围内放大系数不等于单位增益是允许的。这种带通范围内的增益变化叫作带通纹波。另一方面,带阻衰减也不可能是无穷大,我们必须定义一个满意值。带通纹波和带阻衰减都是以分贝(dB)为单位,定义如下:
其中,Ao(f)和Ai(f)是某个频率等于f的信号进出滤波器的幅度值。
例如,假设带通纹波为-0.02dB,则有:
可以看到,输入/输出波形幅度是几乎相同的。
假设带阻衰减等于-60dB,则有:
输出幅值仅是输入幅值的千分之一。
衰减值用分贝表示时经常不加负号,我们已经设定它为负值。
练习4-3
目的:用数字滤波器消除不需要的频率分量
前面板:
框图程序:
1.验证主框图程序,它使用了下面的子程序: Butterworth Filter VI子程序(在Analysis>Filters子目录)。在本例中,采用巴特沃斯滤波器,指定滤波器阶数与截止频率,滤除输入正弦波中的高频分量,把输出波形在屏幕上显示。
2.运行该程序,改变滤波器阶数,观察滤波器的效果。
(练习4-3结束)
虽然在LabVIEW中使用数字滤波器很简便,但还是需要你对数字信号处理的理论有一个基本了解。为此,VI公司提供了一个附加的工具软件,叫作数字滤波器设计工具箱(Digital Filter Design Toolkit)。该软件用LabVIEW开发,有很好的交互式图形用户界面。可以把所设计的滤波器集成到LabVIEW、LabWindows/CVI或者其他的编程环境。
第六节 曲线拟合
曲线拟合的目的是找出一系列的参数a0, a1, … …,通过这些参数最好地模拟实验结果。下列是LabVIEW的各种曲线拟合类型:
- 线性拟合 – 把实验数据拟合为一条直线y[i]=a0+a1*X[i]
- 指数拟合 – 把数据拟合为指数曲线y[i]=a0*exp(al*X[i])
- 多项式拟合 – 把数据拟合为多项式函数: y[i]=a0+a1*X[I]+a2*X[i]^2…
- 通用多项式拟合 – 与多项式拟合相同,但可以选择不同的算法,以获得更好的精度和准确性。
- 通用线性拟合 – 公式为y[i]=a0+a1*f1(X[i])+a2*f2(X[i])…,这里y[i]是参数a0, a1, a2…等的线性组合。通用线性拟合也可以选择不同的算法来提高精度和准确度。例如:y=a0+a1*sin(X)是一个线性拟合。因为y与参数a0, a1有着线性关系。同样道理,多项式拟合也总是属于线性拟合,但是它可以采用一些特殊算法以提高拟合处理的速度和精度。
- General Levenberg-Marquardt拟合 – 把数据拟合为公式y[i]=f(X[i], a0, a1, a2…)。其中a0, a1, a2…是参数。这种方法是最通用的方法,它不需要y与a0, a1, a2…有线性关系。它可用于线性或非线性拟合,但一般用于非线性拟合,因为对于线性曲线的处理采用通用线性拟合方法更加快捷。这种方法不能保证结果一定正确,所以,有必要验证拟合结果。
练习4-4
目的:对指数关系数据进行线性拟合
前面板:
框图程序:
1.验证框图程序,它使用了如下的子程序:
Linear Fit子程序(在Analysis>Curve Fitting子模板)。在本例中,它把实验数据拟合为一条直线,求出系数a和b,以满足y[i]=a+b*t[i];以及实验结果和拟合结果之间的误差的均方根值。
2.输入数据是一个两维数组,是采用DAQ卡采集数据时的通用格式。我们用Index Array子程序可以分解得到两个一维数组y[i]与t[i]。
3.“MSE”表示误差均方根值,误差越小,拟合结果越好。
4.运行该程序。曲线将显示实验数据和拟合结果。
(练习4-4结束)
练习4-5
目的:对指数数据执行多项式拟合
前面板:
1.打开Polynomial Fit.vi程序。这个例子假设实验数据之间为多项式关系: y[i]=a0+a1*t[i]+a2*t[i]^2…
2.当多项式为一阶时,有两个参数,结果是一个线性拟合,与前一个例子相同。当阶数为二阶时,结果是一个二阶多项式带三个参数,多项式参数存放于数组a[i]。
3.切转到框图程序。