第七章 信号分析与处理.docx
- 文档编号:11740899
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:22
- 大小:309.59KB
第七章 信号分析与处理.docx
《第七章 信号分析与处理.docx》由会员分享,可在线阅读,更多相关《第七章 信号分析与处理.docx(22页珍藏版)》请在冰豆网上搜索。
第七章信号分析与处理
第六章信号处理与分析
6.1 概述
数字信号在我们周围无所不在。
因为数字信号具有高保真、低噪声和便于信号处理的优点,所以得到了广泛的应用,例如电话公司使用数字信号传输语音,广播、电视和高保真音响系统也都在逐渐数字化。
太空中的卫星将测得数据以数字信号的形式发送到地面接收站。
对遥远星球和外部空间拍摄的照片也是采用数字方法处理,去除干扰,获得有用的信息。
经济数据、人口普查结果、股票市场价格都可以采用数字信号的形式获得。
因为数字信号处理具有这么多优点,在用计算机对模拟信号进行处理之前也常把它们先转换成数字信号。
本章将介绍数字信号处理的基本知识,并介绍由上百个数字信号处理和分析的VI构成的LabVIEW分析软件库。
目前,对于实时分析系统,高速浮点运算和数字信号处理已经变得越来越重要。
这些系统被广泛应用到生物医学数据处理、语音识别、数字音频和图像处理等各种领域。
数据分析的重要性在于,无法从刚刚采集的数据立刻得到有用的信息,如下图所示。
必须消除噪音干扰、纠正设备故障而破坏的数据,或者补偿环境影响,如温度和湿度等。
通过分析和处理数字信号,可以从噪声中分离出有用的信息,并用比原始数据更全面的表格显示这些信息。
下图显示的是经过处理的数据曲线。
用于测量的虚拟仪器(VI)
用于测量的虚拟仪器(VI)执行的典型的测量任务有:
●计算信号中存在的总的谐波失真。
●决定系统的脉冲响应或传递函数。
●估计系统的动态响应参数,例如上升时间、超调量等等。
●计算信号的幅频特性和相频特性。
●估计信号中含有的交流成分和直流成分。
在过去,这些计算工作需要通过特定的实验工作台来进行,而用于测量的虚拟仪器可以使这些测量工作通过LabVIEW程序语言在台式机上进行。
这些用于测量的虚拟仪器是建立在数据采集和数字信号处理的基础之上,有如下的特性:
●输入的时域信号被假定为实数值。
●输出数据中包含大小、相位,并且用合适的单位进行了刻度,可用来直接进行图形的绘制。
●计算出来的频谱是单边的(single_sided),范围从直流分量到Nyquist频率(二分之一取样频率)。
(即没有负频率出现)
●需要时可以使用窗函数,窗是经过刻度地,因此每个窗提供相同的频谱幅度峰值,可以精确地限制信号的幅值。
一般情况下,可以将数据采集VI的输出直接连接到测量VI的输入端。
测量VI的输出又可以连接到绘图VI以得到可视的显示。
有些测量VI用来进行时域到频域的转换,例如计算幅频特性和相频特性、功率谱、网路的传递函数等等。
另一些测量VI可以刻度时域窗和对功率和频率进行估算。
本章我们将介绍测量VI中常用的一些数字信号处理函数。
LabVIEW的流程图编程方法和分析VI库的扩展工具箱使得分析软件的开发变得更加简单。
LabVIEW分析VI通过一些可以互相连接的VI,提供了最先进的数据分析技术。
你不必像在普通编程语言中那样关心分析步骤的具体细节,而可以集中注意力解决信号处理与分析方面的问题。
LabVIEW6i版本中,有两个子模板涉及信号处理和数学,分别是Analyze子模板和Methematics子模板。
这里主要涉及前者。
进入Functions模板Analyze》SignalProcessing子模板。
其中共有6个分析VI库。
其中包括:
①.SignalGeneration(信号发生):
用于产生数字特性曲线和波形。
②.TimeDomain(时域分析):
用于进行频域转换、频域分析等。
③.FrequencyDomain(频域分析):
④.Measurement(测量函数):
用于执行各种测量功能,例如单边FFT、频谱、比例加窗以及泄漏频谱、能量的估算。
⑤.DigitalFilters(数字滤波器):
用于执行IIR、FIR和非线性滤波功能。
⑥.Windowing(窗函数):
用于对数据加窗。
在后面几节中,你将学习如何使用分析库中的VI创建函数发生器和简单实用的频谱分析仪,如何使用数字滤波器,窗函数的作用以及不同类型窗函数的优点,怎样执行简单的曲线拟合功能,以及其他一些内容。
可以在labview\examples\analysis目录中找到一些演示程序。
6.2 信号的产生
本节将介绍怎样产生标准频率的信号,以及怎样创建模拟函数发生器。
参考例子见examples\analysis\sigxmpl.llb。
你还将学习怎样使用分析库中的信号发生VI产生各种类型的信号。
信号产生的应用主要有:
●当无法获得实际信号时,(例如没有DAQ板卡来获得实际信号或者受限制无法访问实际信号),信号发生功能可以产生模拟信号测试程序。
●产生用于D/A转换的信号
在LabVIEW6i中提供了波形函数,为制作函数发生器提供了方便。
以Waveform>>WaveformGeneration中的基本函数发生器(BasicFunctionGenerator.vi)为例,其图标如下:
其功能是建立一个输出波形,该波形类型有:
正弦波、三角波、锯齿波和方波。
这个VI会记住产生的前一波形的时间标志并且由此点开始使时间标志连续增长。
它的输入参数有波形类型、样本数、起始相位、波形频率(单位:
Hz)
参数说明:
offset:
波形的直流偏移量,缺省值为0.0。
数据类型DBL
resetsignal:
将波形相位重置为相位控制值且将时间标志置为0。
缺省值为FALSE.
signaltype:
产生的波形的类型,缺省值为正弦波。
frequency:
波形频率(单位Hz),缺省值为10。
amplitude:
波形幅值,也称为峰值电压,缺省值为1.0。
phase:
波形的初始相位(单位度)缺省值为0.0.
errorin:
在该VI运行之前描述错误环境。
缺省值为noerror.如果一个错误已经发生,该VI在errorout端返回错误代码。
该VI仅在无错误时正常运行。
错误簇包含如下参数。
status:
缺省值为FALSE,发生错误时变为TRUE。
code:
错误代码,缺省值为0。
source:
在大多数情况下是产生错误的VI或函数的名称,缺省值为一个空串。
samplinginfo:
一个包括采样信息的簇。
共有Fs和#s两个参数。
Fs:
采样率,单位是样本数/秒,缺省值为1000。
#s:
波形的样本数,缺省值为1000。
dutycycle(%):
占空比,对方波信号是反映一个周期内高低电平所占的比例,缺省值为50%。
signalout:
信号输出端
phaseout:
波形的相位,单位:
度。
errorout:
错误信息。
如果errorin指示一个错误,errorout包含同样的错误信息。
否则,它描述该VI引起的错误状态。
使用该VI制作的函数发生器如下,由框图可以看出,其中没有附加任何其他部件。
6.3标准频率
在模拟状态下,信号频率用Hz或者每秒周期数为单位。
但是在数字系统中,通常使用数字频率,它是模拟频率和采样频率的比值,表达式如下:
数字频率=模拟频率/采样频率
这种数字频率被称为标准频率,单位是周期数/采样点。
有些信号发生VI使用输入频率控制量f,它的单位和标准频率的单位相同:
周期数/每个采样点,范围从0到1,对应实际频率中的0到采样频率fs的全部频率。
它还以1.0为周期,从而令标准频率中的1.1与0.1相等。
例如某个信号的采样频率是奈奎斯特频率(fs/2),就表示每半个周期采样一次(也就是每个周期采样两次)。
与之对应的标准频率是1/2周期数/采样点,也就是0.5周期数/采样点。
标准频率的倒数1/f表示一个周期内采样的次数。
如果你所使用的VI需要以标准频率作为输入,就必须把频率单位转换为标准单位:
周期数/采样点。
6.4 数字信号处理
6.4.1 FFT变换
信号的时域显示(采样点的幅值)可以通过离散傅立叶变换(DFT)的方法转换为频域显示。
为了快速计算DFT,通常采用一种快速傅立叶变换(FFT)的方法。
当信号的采样点数是2的幂时,就可以采用这种方法。
FFT的输出都是双边的,它同时显示了正负频率的信息。
通过只使用一半FFT输出采样点转换成单边FFT。
FFT的采样点之间的频率间隔是fs/N,这里fs是采样频率。
Analyze库中有两个可以进行FFT的VI,分别是RealFFTVI和ComplexFFTVI。
这两个VI之间的区别在于,前者用于计算实数信号的FFT,而后者用于计算复数信号的FFT。
它们的输出都是复数。
大多数实际采集的信号都是实数,因此对于多数应用都使用RealFFTVI。
当然也可以通过设置信号的虚部为0,使用ComplexFFTVI。
使用ComplexFFTVI的一个实例是信号含有实部和虚部。
这种信号通常出现在数据通信中,因为这时需要用复指数调制波形。
计算每个FFT显示的频率分量的能量的方法是对频率分量的幅值平方。
高级分析库中PowerSpectrumVI可以自动计算能量频谱。
PowerSpectrumVI的输出单位是Vrms2。
但是能量频谱不能提供任何相位信息。
FFT和能量频谱可以用于测量静止或者动态信号的频率信息。
FFT提供了信号在整个采样期间的平均频率信息。
因此,FFT主要用于固定信号的分析(即信号在采样期间的频率变化不大)或者只需要求取每个频率分量的平均能量。
2.流程图中的ArraySize函数用来根据样本数转换FFT的输出,得到频率分量的正确幅值。
3.把该VI保存为LabVIEW\Activity目录中的FFT_2sided.vi。
4.选择频率(Hz)=10,采样率=100,样本数=100。
执行该VI。
注意这时的时域图和频谱图。
因为采样率=样本数=100,所以时域图中的正弦波的周期数与选择的频率相等,即可以显示10个周期。
(如果把频率改成5,那么就会显示5个周期)
双边FFT
5.检查频谱图可以看到有两个波峰,一个位于10Hz,另一个位于90Hz,90Hz处的波峰实际上是10Hz处的波峰的负值。
因为图形同时显示了正负频率,所以被称为双边FFT。
6.先后令频率=10、20(Hz),执行该VI。
注意每种情况下频谱图中波峰位置的移动。
观察频率等于10和20时的时域波形。
注意哪种情况下的波形显示更好,并解释原因。
7.因为fs=100Hz,所有只能采样频率低于50Hz的信号(奈奎斯特频率=fs/2)。
把频率修改为48Hz,可以看到频谱图的波峰位于±48Hz。
8.把频率改为52HZ,观察这时产生的图形与第5步产生的图形的区别。
因为52大于奈奎斯特频率,所以混频偏差等于|100–52|=48Hz。
9.把频率改成30和70Hz,执行该VI。
观察这两种情况下图形是否相同,并解释原因。
单边FFT
10.按照下图修改流程图。
上面已经知道因为FFT含有正负频率的信息,所以可以FFT具有重复信息。
现在这样修改之后只显示一半的FFT采样点(正频率部分)。
这样的方法叫做单边FFT。
单边FFT只显示正频部分。
注意要把正频分量的幅值乘以2才能得到正确的幅值。
但是,直流分量保持不变。
(若程序中考虑含直流分量的情况,应当增加一个分支或case结构。
11.设置频率(Hz)=30,采样率=100,样本数=100,运行该VI。
12.保存该VI为LabVIEW\Activity目录下的FFT_1sided.vi。
13.把频率改为70Hz,执行该VI,观察这时产生的图形与第9步产生的图形的区别。
练习6-1结束。
6.4.2 窗函数
计算机只能处理有限长度的信号,原信号x(t)要以T(采样时间或采样长度)截断,即有限化。
有限化也称为加“矩形窗”或“不加窗”。
矩形窗将信号突然截断,这在频域造成很宽的附加频率成分,这些附加频率成分在原信号x(t)中其实是不存在的。
一般将这一问题称为有限化带来的泄露问题。
泄露使得原来集中在f0上的能量分散到全部频率轴上。
泄露带来许多问题:
如①使频率曲线产生许多“皱纹”(Ripple),较大的皱纹可能与小的共振峰值混淆;②如信号为两幅值一大一小频率很接近的正弦波合成,幅值较小的一个信号可能被淹没。
③f0附近曲线过于平缓,无法准确确定f0的值。
为了减少泄露,人们尝试用过渡较为缓慢的、非矩形的窗口函数。
常用的窗函数如下表所示。
窗
定义
应用
矩形窗(无窗)
W[n]=1.0
区分频域和振幅接近的信号瞬时信号宽度小于窗
指数形窗
W[n]=exp[n*lnf/N-1]
f=终值
瞬时信号宽度大于窗
海宁窗
W[n]=0.5cos(2nπ/N)
瞬时信号宽度大于窗普通目的的应用
海明窗
W[n]=0.54-0.46cos(2nπ/N)
声音处理
平顶窗
W[n]=0.2810639-0.5208972cos(2nπ/N)
+0.1980399cos(2nπ/N)
分析无精确参照物且要求精确测量的信号
Kaiser-Bessel窗
W[n]=Iº(β)
区分频率接近而形状不同的信号
三角形窗
W[n]=1-|(2n-N)/N|
无特殊应用
在实际应用中如何选择窗函数一般说来是要仔细分析信号的特征以及最终你希望达到的目的,并经反复调试。
窗函数有利有弊,使用不当还会带来坏处。
使用窗函数的原因很多,例如:
⏹规定测量的持续时间。
⏹减少频谱泄漏。
⏹从频率接近的信号中分离出幅值不同的信号。
下面的例子(详见LabVIEW6i中的SearchExamples>FundamentalsExamples>AnalysisExamples>SignalProcessing>WindowsExamples>WindowComparison)是从频率接近的信号中分离出幅值不同的信号,正弦波1与正弦波2频率较接近,但幅值相差1000倍,相加后产生的信号变换到频域,如果在FFT之前不加窗,则频域特性中幅值较小的信号被淹没。
加Hanning窗后两个频率成分都被检出。
6.4.3 谐波失真与频谱分析
当一个含有单一频率(比如f1)的信号x(t)通过一个非线性系统时,系统的输出不仅包含输入信号的频率(f1),而且包含谐波分量(f2=2f1,f3=3f1,f4=4f1等等),谐波的数量以及它们对应的幅值大小取决于系统的非线性程度。
电网中的谐波是一个值得关注的问题。
下面的一个非线性系统的例子是输出y(t)是输入x(t)的立方。
假如输入信号:
则输出:
因此,输出不仅含有基波频率w,而且还有三次谐波的频率3w。
谐波失真的总量
为了决定一个系统引入非线性失真的大小,需要得到系统引入的谐波分量的幅值和基波的幅值的关系。
谐波失真是谐波分量的幅值和基波幅值的相对量。
假如基波的幅值是A1,而二次谐波的幅值是A2,三次谐波的幅值是A3,四次谐波的幅值是A4。
。
。
。
。
。
N次谐波的幅值是AN,总的谐波失真(THD)为:
用百分数表示的谐波失真(%THD)为:
LabVIEW6i提供的谐波分析器与以前的版本有一些变化,下面先介绍它
该VI对输入信号进行完整的谐波分析,包括测定基波和谐波,返回基波频率和所有的谐波幅度电平,以及总的谐波失真度(THD)。
其部分参数含义如下:
stopsearchatNyquist:
如果设置为TRUE(缺省值T),则只包含低于Nyquist频率(采样频率的一半)的谐波。
如果设置为FALSE,该VI将继续搜索Nyquist范围之外的频率。
signalin:
输入信号。
exportsignals:
选择输出到信号指示器的信号。
有如下几种选择:
none——对快速计算;
inputsignal——定时将输入信号反映到输出端;
fundamentalsignal——在输出端反映基波;
residualsignal——在输出端反映除基波之外的剩余信号;
harmonicsonly——在输出端反映谐波时域信号及其频谱。
highestharmonic:
控制最高谐波成分,包括用于谐波分析的基波。
例如,对于3次谐波分析,该控制将设置测量基波、2次谐波和3次谐波。
.
errorin:
在该VI运行之前描述错误环境。
缺省值为noerror.如果一个错误发生,该VI在errorout端返回错误代码。
该VI仅在无错误时正常运行。
错误簇包含如下参数。
status:
缺省值为FALSE,发生错误时变为TRUE。
code:
错误代码,缺省值为0。
source:
在大多数情况下是产生错误的VI或函数的名称,缺省值为一个空串。
advancedsearch:
控制频域搜索区域,中心频率及频带宽度。
该功能用来确定信号的基波。
approx.fund.freq.(optional)——用来搜索基波的中心频率的估算值。
如果设置缺省值为-1.0,,则选择幅值最大的频率成分为基波。
search(+/-%ofFsampl.)——用来搜索基波频率频带宽度,是采样率的百分比。
exportedsignals:
包含输出的时域信号及其频谱供选择。
detectedfundamentalfrequency:
探测在频域搜索得到的基波。
用advancedsearch设置频率搜索范围。
所有谐波测量为基波的整数倍。
THD:
总谐波失真度。
它定义为谐波RMS之和与基波幅值之比。
为了折算为百分数,需要乘以100。
componentslevel:
测量谐波幅值的电平(单位伏),是一个数组。
该数组索引包括0(DC),1(基波),2(2次谐波),...n(n次谐波),直到最高谐波成分。
measurementinfocluster:
任何处理期间遭遇的预告
uncertainty备用;
Warning:
如果处理期间警告发生为TRUE。
comments:
当Warning为TRUE时的消息内容。
下面是一个谐波分析的例子。
由通道0输入一个模拟信号,经DAQ后进行谐波分析,先后分析了两个信号,首先是一个761Hz的正弦信号,第二个信号是一个1000Hz的。
分析仅限于不高于5次的谐波。
分析结果见两个前面板。
对一个实际的正弦信号,谐波失真总量(THD)与基波电平相比,可以忽略。
对方波THD就较大了。
谐波分析应用的一个例子
6.3.1数字滤波
模拟滤波器设计是电子设计中最重要的部分之一。
尽管很多参考书都提供了简单可靠的模拟滤波器示例,但是滤波器的设计通常还是需要专家来完成,因为这项工作需要较高深的数学知识和对系统与滤波器之间的关系有深入的了解。
现代的数字采样和信号处理技术已经可以取代模拟滤波器,尤其在一些需要灵活性和编程能力的领域中,例如音频、通讯、地球物理和医疗监控技术。
与模拟滤波器相比,数字滤波器具有下列优点:
●可以用软件编程
●稳定性高,可预测
●不会因温度、湿度的影响产生误差,不需要精度组件
●很高的性能价格比
在LabVIEW中可以用数字滤波器控制滤波器顺序、截止频率、脉冲个数和阻带衰减等参数。
本节所涉及到的数字滤波器都符合虚拟仪器的使用方法。
它们可以处理所有的设计问题、计算、内存管理,并在内部执行实际的数字滤波功能。
这样您无需成为一个数字滤波器或者数字滤波的专家就可以对数据进行处理。
采样理论指出,只要采样频率是信号最高频率的两倍以上就可以根据离散的、等分的样本还原一个时域连续的信号。
假设对信号以△t为时间间隔进行采样,并且不丢失任何信息,参数△t是采样间隔。
可以根据采样间隔计算出采样频率
根据上面的公式和采样理论可以知道,信号系统的最高频率可以表示为:
系统所能处理的最高频率是恩奎斯特频率。
这同样适用于数字滤波器。
例如,如果采样间隔是0.001秒,那么采样频率是
系统所能处理的最高频率是
下面几种滤波操作都基于滤波器设计技术:
●平滑窗口
●无限冲激响应(IIR)或者递归数字滤波器
●有限冲激响应(FIR)或者非递归数字滤波器
●非线性滤波器
很多情况下通带的增益在均值附近稍微发生变化是容许的。
通带的这种变化被称为通带波动(passbandripple),也就是实际增益与理想增益之间的差值。
在实际使用中阻带衰减(stopbandattenuation)也不可能无限接近0,您必须指定一个符合需要的衰减值。
通带波动和阻带衰减都使用分贝或者dB为单位,定义是:
其中log10表示基值10的对数,而Ai(f)andA0(f)分别是频率在滤波前后的幅值。
例如,对于–0.02dB的通带波动,表达式是:
这表明输入输出的幅值非常接近。
如果阻带衰减为–60dB,那么可以得到:
这表明输出幅值是输入幅值的1/1000。
衰减值通常用不带负号的分贝为单位,但是默认为负值。
IIR和FIR滤波器
另外一种滤波器分类方法是根据它们的冲激响应的类型。
滤波器对于输入的冲激信号(x[0]=1且对于所有I<>0,x[i]=0)的响应叫做滤波器的冲激响应(impulseresponse),如下图所示。
冲激响应的傅立叶变换被称为滤波器的频率响应(frequencyresponse)。
根据滤波器的频率响应可以求出滤波器在不同频率下的输出。
换句话说,根据它可以求出滤波器在不同频率时的增益值。
对于理想滤波器,通频带的增益应当为1,阻带的增益应当为0。
所以,通频带的所有频率都被输出,而阻带的所有频率都不被输出。
如果滤波器的冲激响应在一定时间之后衰减为0,那么这个滤波器被称为有限冲激响应(FIR)滤波器。
但是,如果冲激响应一直保持,那么这个滤波器被称为无限冲激响应滤波器(IIR)。
冲激响应是否有限(即滤波器是IIR还是FIR)取决于滤波器的输出的计算方法。
IIR滤波器和FIR滤波器之间最基本的差别是,对于IIR滤波器,输出只取决于当前和以前的输入值,而对于FIR滤波器,输出不仅取决于当前和以前的输入值,还取决于以前的输出值。
简单地说,FIR滤波器需要使用递归算法。
IIR滤波器的缺点是它的相位响应是非线形的。
在不需要相位信息的情况下,例如简单的信号监控,那么IIR滤波器就符合需要。
而对于那些需要线形相位响应的情况,应当使用FIR滤波器。
但是,IIR滤波器的递归性增大了它的设计与执行的难度。
因为滤波器的初始状态是0(负指数是0),所以在到达稳态之前会出现与滤波器阶数相对应的过渡过程。
对于低通和高通滤波器,过渡过程或者延迟的持续时间等于滤波器的阶数。
可以通过启动静止内存消除连续调用中的过渡过程,方法是将VI的init/cont控制对象设置为TURE(连续滤波)。
对数字滤波器的详细讨论不是本书的内容,读者可参阅有关数字信号处理的书籍,下面我们具一个简单的例子说明在LabVIEW中如何使用数字滤波器。
练习6-2使用数字滤波器
目的:
使用一个低通数字滤波器对实际采集的方波信号滤波。
1.创建前面板和流程图如下所示。
2.注意流程图。
其中使用了一个数字滤波器模块(Functions模板:
Analyze)SignalProcessing)Filters下的ButterworthFilter.vi)。
先介绍一下这个VI。
Butterworth滤波器
filtertype:
按下列值指定滤波器类型
0:
Lowpass低通
1:
Highpass高通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 信号分析与处理 第七 信号 分析 处理