《基于LabVIEW的虚拟仪器设计—FFT快速傅立叶变换函数的应用.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的虚拟仪器设计—FFT快速傅立叶变换函数的应用.docx(14页珍藏版)》请在第一文库网上搜索。
1、基于1abVIEW的虚拟仪器设计FFT快速傅立叶变换函数的应用摘要FFT(FastFourierTransformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。DFT对于X(K)的每个K值,需要进行4N次实数相乘和(4N-2)次相加,对于有N个K值的情况,共需N*N乘和N(4N-2)次实数相加。改进DFT算法,减小它的运算量,利用DFT中的周期性和对称性,使整个DFT的计算变成一系列迭代运算,可大幅度提高运算过程和运算量,这就是FFT的基本思想。虽然它对傅氏变换的理论并没有新的发现,但是对于在计算机系
2、统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。虽然FFT大幅度地降低了常规傅立叶变换的运算量,但对于一般的单片机而言,处理FFT运算还是力不从心。主要原因是FFT计算过程中的蝶形运算是复数运算,要分开实部和虚部分别计算。在这是利用1abVIEW来实现快速傅立叶变化。1abVIEW是一种程序开发环境,类似于BASIC开发环境;但1abvIEW与其它计算机语言相比,有一个特别重要的不同点:其它计算机语言都是采用基于文本的语言产生代码行;而1abVIEW使用图形化编程语言G编写程序,产生.的程序是框图的形式。像C或BASIC一样,1abVIEW也是通用的编程系统,有一个可完成任何编程任务
3、的庞大的函数库。1abVIEW的函数库共包括数据采集、GPIIk串口控制、数据分析、数据显示及数据存储等。1abVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其通过程序(子VI)的结果、单步执行等,便于程序的调试。关键词:虚拟仪器,1abVIEW,FFT1绪论31.1 课题描述31.2 方案论证错误!未定义书签。2FFT的实现22.1 1ABVIEW平台22.2 正弦信号的产生错误!未定义书签。2.3 均匀噪声的加入错误!未定义书签。2.4 低通滤波错误!未定义书签。2.5 快速傅里叶变换63性能的测试73.1 单一频率正弦信号的FFT73.2 叠加了高频噪声的正弦信号的FF
4、T7总结10致谢11参考文献121绪论1.1 课题描述由于电子技术、计算机技术、软件技术、网络技术的高度发展及其在电子测量技术与仪器上的应用,新的测试理论、新的测试方法、新的测试领域及新的仪器结构不断出现,许多方面已经突破传统的仪器概念,电子测量仪器的功能和结构己经发生了质的变化。在这种背景下,八十年代末美国率先研制了虚拟仪器(VirtUaIInstruments)虚拟仪器就是利用现有的计算机加上特殊设计的仪器硬件和专用软件,形成既有普通仪器的基本功能,又有一般仪器没有的特殊功能的高档、低价的新型仪器。虚拟仪器利用个人计算机强大的图形环境和在线帮助功能,建立虚拟仪器面板,完成对仪器的控制、数据
5、分析与显示。代替传统仪器,改变了传统仪器的使用方式,提高仪器的功能和使用效率,同时大大降低了仪器的价格,使用户可以根据自己的需要定义仪器的功能。用于虚拟仪器的开发环境目前有两大类:一是文本式的编程语言,另一类是图形化编程语言,具有代表性的有1abVIEWo其中影响最大的要数1abVIEW(1aboratoryVirtua1InstrumentEngineeringWorkbench,实验室虚拟仪器工程平台)语言,被称为“仪器仪表界面”,是专为数据采集与仪器控制、数据分析和数据表达而设计的开发软件。1.2 方案论证1、单一频率正弦信号的FFT采用1abView的信号产生模板提供的常用的信号发生器
6、,从中找到正弦信号发生器,使其产生一个正弦信号。将此正弦信号输入到实数FFT.vi中的X端进行快速傅里叶变换处理,使时域信号转换为频域信号。然后经过复数至极坐标转换后将其显示出来。其结构如图1所示。图1单一频率正弦信号的FFT结构图2、叠加了高频噪声的正弦信号的FFT在1abview的信号产生模板提供的常用的信号发生器中找到均匀白噪声发生器,使其产生一个均匀白噪声,再将均匀白噪声输入到一个巴特沃斯高通滤波器,使其产生一个高频噪声,将此高频噪声与一正弦信号合并从而产生一个混合信号。再将混合信号输入到一个低通滤波器进行低通滤波,滤掉高频噪声。将滤波后的信号输入到实数FFT.vi中的X端进行快速傅里
7、叶变换处理,使时域信号转换为频域信号。然后经过复数至极坐标转换后将其显示出来。其结构如图2所示。图2混合信号的FFT结构图2FFT的实现2. 11abViCW平台1abVIEW(1aboratoryVirtua1InstrumentEngineeringWorkbench)是一种用图标代替文本行创建应用程序的图形化编程语言。1abVieW程序又称为虚拟仪器(Virtua1Instrument,简称VI)。1abV1EW是一种程序开发环境,类似于C和BASIC开发环境,但1abVIEW与其它计算机语言的显著区别是:其它计算机语言都是采用基于文本的语言产生代码行,而1abV1EW使用图形化编程语言
8、G语言编写程序,产生的程序是框图的形式。像C或BASIC一样,1abV1EW也是通用的编程系统,有一个可完成任何编程任务的庞大的函数库。1abV1EW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等等。1abVIEW也有传统的程序调试工具,如设置断点、以动画形式显示数据及其通过程序(子V1)的结果、单步执行等等,便于程序的调试。虚拟仪器,简称VI,包括三部分:前面板、框图程序和图标/连接器。程序前面板,用于设置输入量和观察输出量。它模拟真实仪器的前面板。其中,输入量被称为Contro1S(控件),用户可以通过控件向V1中设置输入参数等;输出量被称为IndiCatOrS(
9、指示器),V1通过指示器向用户提示状态或输出数据等。用户还可以使用各种图标,如旋钮、开关、按钮、图表及图形等,使前面板易看易懂。每一个程序前面板都有相应的框图程序与之对应。框图程序,用图形编程语言编写,可以把它理解成传统程序的源代码。框图中的部件可以看成程序节点,如循环控制、事件控制和算术功能等。这些部件都用连线连接,以定义框图内的数据流动方向。图标/接口器件可以让用户把V1程序变成一个对象(V1子程序),然后在其他程序中像子程序一样地调用它。图标表示在其他程序中被调用的子程序,而接线端口则表示图标的输入/输出口,就像子程序的参数端口对应着VI程序前面板控件和指示器的数值。虚拟仪器和传统仪器的
10、差异很大,具有很强的优势。独立的传统仪器,例如示波器和波形发生器,性能强大,但是价格昂贵,且被厂家限定了功能,只能完成一件或几件具体的工作,因此,用户通常都不能够对其加以扩展或自定义其功能。仪器的旋钮和开关、内置电路及用户所能使用的功能对这台仪器来说都是固定的。另外,开发这些仪器还必须要用专门的技术和高成本的元部件,从而使它们身价颇高且很不容易更新。基于PC机的虚拟仪器系统,诞生以来就充分利用了现成即用的PC机所带来的最新科技。这些科技和性能上的优势迅速缩短了独立的传统仪器和PC机之间的距离,包括功能强大的处理器(如PentiUm4)、操作系统及微软WineIoWSXP、NET技术和APP1e
11、MacOSx除了融合诸多功能强大的特性,这些平台还为用户提供了简单的联网工具。此外,传统仪器往往不便随身携带,而虚拟仪器可以在笔记本电脑上运行,充分体现了其便携特性。需要经常变换应用项目和系统要求的工程师和科学家们需要有非常灵活的开发平台以便创建适合自己的解决方案。可以使用虚拟仪器以满足特定的需要,因为有安装在PC机上的应用软件和一系列可选的插入式硬件,无需更换整套设备,即能完成新系统的开发。2. 2正弦信号的产生在模拟电路范围,信号频率以HZ或周期(CyCIe)来测量,但在数字系统中使用数字频率,它是模拟频率与采样频率之比,即数字频率二模拟频率/采样频率,其单位为周期数/采样数。要产生一个正
12、弦信号需要一个SUbVI:SinePattern.vi(在信号处理-信号生成子模板)。SinePattern.vi有4个输入我们只用采样和周期输入,如图3示。SinePattern,vi生成的是正弦信号的数组。数组的长度(1个完整周期)只与采样参数有关,是固定长度的。换句话说,我们可以任意确定正弦信号的一个完整周期内取多少个采样点。对于上面的默认参数是是一个完整正弦信号周期内取128点(也就是数组的长度正弦信号NI_AA1Base.1vhb:SinePattern.vi采幅度周正弦信号错误图3正弦信号2.3 均匀噪声的加入在实际的环境中,一定会有噪声的影响因此我们加入高频噪声。首先我们要建立一
13、个均匀白噪声.vi(在信号处理-信号生成子模板)。将白噪声通过一个巴特沃斯高通滤波器与原正弦信号合并,使其产生一个叠加了高频噪声的正弦波。其结构如图4示。图4叠加了高频噪声的正弦波框图其中均匀白噪声如图5所示,我们可以控制白噪声的采样频率和幅值。而巴特沃斯高通滤波器如图6所示,高截止频率:fh是高截止频率。默认值为0.45。如滤波器类型为0(Iowpass)或1(highpass),VI将忽略该参数。滤波器类型为2(Bandpass)或3(BandStOP)时,fh必须大于低截止频率,f1并且满足奈奎斯特准则。奈奎斯特准则(NyqUiStcriterion):f10.5fs,其中f1为截止频率
14、,fs为采样频率。低截止频率:f1是低截止频率并且必须满足Nyquist准则。默认值为0.125。f1小于0或大于采样频率的一半,VI将把滤波后X设置为空数组并返回错误。滤波器类型为2(Bandpass)或3(BanC1StOP)时,f1必须小于高截止频率(fh)。介数:阶数指定的滤波器的阶数并且必须大于0。默认值为2。例如阶数小于等于O,V1将把滤波后X设置为空数组并返回错误。采样频率:fs是采样频率并且必须大于0。默认值为1.0。如采样频率:fs小于等于0,VI将把滤波后X设置为空数组并返回错误。均匀白噪声NI_AA1Base.1v1ib:UniformWhiteNoise.vi祥值子采幅
15、种均匀白噪声-错误图5均匀白噪声发生器BUtterWOrth滤波器NI_AA1Base.1v1ib:ButterworthFi1ter.vi2.4 低通滤波将叠加了高频噪声的正弦波通过一个低通滤波器,使用低通滤波器对原始信号滤波,滤掉高频噪声。其结构如图7示。图7低通滤波2. 5快速傅里叶变换时域信号有一定缺陷,需要将时域信号转换为频域信号,将时域信号转换为频域信号的方法有很多,例如,FoUrier变换,快速FOUriCr变换FFT,小波变换等。下面使用1abview的FFT将上述的时域信号转换为频域信号,FFT的框图如图8所示,其中左端的X是FFt接受时域输入序列的输出;右端的FFTX是FFT的频域输出。将滤波后的正弦波输入到X端(实数FFT.vi的输入为实数数组)连接后结构如图9所示。输出FFTX表示的是一个复数,是FFT变换的结果X,用ComPIeXtoPo1ar函数可以将r和0分开。r越大,表示X序列在此处对应的频率成分越高。X序列之间的频率间隔df=fsN,其中fs表示信号的采样率,N表示采样点数。因此由r序列的最大值对应的IndeX和df就可以确定该信号中哪个频率下的谐波成分最高,该频率f=df*r序列中最大值对应的IndexoFFTNI_AA1Pro.1v1ib:FFT.viXFFTX图9快速傅里叶变换处理结构图3性能的测试