基于Labview的快速傅里叶变换的实现.docx
《基于Labview的快速傅里叶变换的实现.docx》由会员分享,可在线阅读,更多相关《基于Labview的快速傅里叶变换的实现.docx(12页珍藏版)》请在冰豆网上搜索。
![基于Labview的快速傅里叶变换的实现.docx](https://file1.bdocx.com/fileroot1/2023-4/16/1bb24489-521d-4153-bd0b-61622df1d3ac/1bb24489-521d-4153-bd0b-61622df1d3ac1.gif)
基于Labview的快速傅里叶变换的实现
一、概述
FFT(FastFourierTransformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
DFT对于X(K)的每个K值,需要进行4N次实数相乘和(4N-2)次相加,对于N个k值,共需N*N乘和N(4N-2)次实数相加。
改进DFT算法,减小它的运算量,利用DFT中的周期性和对称性,使整个DFT的计算变成一系列迭代运算,可大幅度提高运算过程和运算量,这就是FFT的基本思想。
虽然它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
虽然FFT大幅度地降低了常规傅立叶变换的运算量,但对于一般的单片机而言,处理FFT运算还是力不从心。
主要原冈是FFT计算过程中的蝶形运算是复数运算,要分开实部和虚部分别计算。
在这里利用LabVIEW来实现快速傅立叶变化。
LabVIEW是一种程序开发环境,类似于BASIC开发环境;但LabVIEW与其它计算机语言相比,有一个特别重要的不同点:
其它计算机语言都是采用基于文本的语言产生代码行;而LabVIEW使用图形化编程语言G编写程序,产生.的程序是框图的形式。
像C或BASIC一样,LabVIEW也是通用的编程系统,有一个可完成任何编程任务的庞大的函数库。
LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等。
LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其通过程序(子V1)的结果、单步执行等,便于程序的调试。
二、方案论证
1:
单一频率正弦信号的FFT
采用Labview的信号产生模板提供的常用的信号发生器,从中找到正弦信号发生器,使其产生一个正弦信号。
将此正弦信号输入到实数FFT.vi中的X端进行快速傅里叶变换处理,使时域信号转换为频域信号。
然后经过复数至极坐标转换后将其显示出来。
其结构如图1所示。
正弦信号
FFT变换
复数至极坐标转换
显示
图1单一频率正弦信号的FFT结构图
2:
叠加了高频噪声的正弦信号的FFT
在Labview的信号产生模板提供的常用的信号发生器中找到均匀白噪声发生器,使其产生一个均匀白噪声,再将均匀白噪声输入到一个巴特沃斯高通滤波器,使其产生一个高频噪声,将此高频噪声与一正弦信号合并从而产生一个混合信号。
再将混合信号输入到一个低通滤波器进行低通滤波,滤掉高频噪声。
将滤波后的信号输入到实数FFT.vi中的X端进行快速傅里叶变换处理,使时域信号转换为频域信号。
然后经过复数至极坐标转换后将其显示出来。
其结构如图2所示。
合并
正弦信号
高频噪声
低通滤波
FFT变换
复数至极坐标转换
显示
图2混合信号的FFT结构图
三、FFT的实现
1.Labview平台
LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是一种用图标代替文本行创建应用程序的图形化编程语言。
Labview程序又称为虚拟仪器(VirtualInstrument,简称VI)。
LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但LabVIEW与其它计算机语言的显著区别是:
其它计算机语言都是采用基于文本的语言产生代码行,而LabVIEW使用图形化编程语言G语言编写程序,产生的程序是框图的形式。
像C或BASIC一样,LabVIEW也是通用的编程系统,有一个可完成任何编程任务的庞大的函数库。
LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等等。
LabVIEW也有传统的程序调试工具,如设置断点、以动画形式显示数据及其通过程序(子VI)的结果、单步执行等等,便于程序的调试。
虚拟仪器,简称VI,包括三部分:
前面板、框图程序和图标/连接器。
程序前面板,用于设置输入量和观察输出量。
它模拟真实仪器的前面板。
其中,输入量被称为Controls(控件),用户可以通过控件向VI中设置输入参数等;输出量被称为Indicators(指示器),VI通过指示器向用户提示状态或输出数据等。
用户还可以使用各种图标,如旋钮、开关、按钮、图表及图形等,使前面板易看易懂。
每一个程序前面板都有相应的框图程序与之对应。
框图程序,用图形编程语言编写,可以把它理解成传统程序的源代码。
框图中的部件可以看成程序节点,如循环控制、事件控制和算术功能等。
这些部件都用连线连接,以定义框图内的数据流动方向。
图标/接口器件可以让用户把VI程序变成一个对象(VI子程序),然后在其他程序中像子程序一样地调用它。
图标表示在其他程序中被调用的子程序,而接线端口则表示图标的输入/输出口,就像子程序的参数端口对应着VI程序前面板控件和指示器的数值。
虚拟仪器和传统仪器的差异很大,具有很强的优势。
独立的传统仪器,例如示波器和波形发生器,性能强大,但是价格昂贵,且被厂家限定了功能,只能完成一件或几件具体的工作,因此,用户通常都不能够对其加以扩展或自定义其功能。
仪器的旋钮和开关、内置电路及用户所能使用的功能对这台仪器来说都是固定的。
另外,开发这些仪器还必须要用专门的技术和高成本的元部件,从而使它们身价颇高且很不容易更新。
基于PC机的虚拟仪器系统,诞生以来就充分利用了现成即用的PC机所带来的最新科技。
这些科技和性能上的优势迅速缩短了独立的传统仪器和PC机之间的距离,包括功能强大的处理器(如Pentium4)、操作系统及微软WindowsXP、NET技术和AppleMacOSx。
除了融合诸多功能强大的特性,这些平台还为用户提供了简单的联网工具。
此外,传统仪器往往不便随身携带,而虚拟仪器可以在笔记本电脑上运行,充分体现了其便携特性。
需要经常变换应用项目和系统要求的工程师和科学家们需要有非常灵活的开发平台以便创建适合自己的解决方案。
可以使用虚拟仪器以满足特定的需要,因为有安装在PC机上的应用软件和一系列可选的插入式硬件,无需更换整套设备,即能完成新系统的开发。
2.正弦信号的产生
在模拟电路范围,信号频率以Hz或周期(Cycle)来测量,但在数字系统中使用数字频率,它是模拟频率与采样频率之比,即
数字频率=模拟频率/采样频率,其单位为周期数/采样数。
要产生一个正弦信号需要一个SubVI:
SinePattern.vi(在信号处理->信号生成子模板)。
SinePattern.vi有4个输入我们只用采样和周期输入,如图3示。
SinePattern.vi生成的是正弦信号的数组。
数组的长度(1个完整周期)只与采样参数有关,是固定长度的。
换句话说,我们可以任意确定正弦信号的一个完整周期内取多少个采样点。
对于上面的默认参数是是一个完整正弦信号周期内取128点(也就是数组的长度)。
图3正弦信号
3.均匀噪声的加入
在实际的环境中,一定会有噪声的影响因此我们加入高频噪声。
首先我们要建立一个均匀白噪声.vi(在信号处理->信号生成子模板)。
将白噪声通过一个巴特沃斯高通滤波器与原正弦信号合并,使其产生一个叠加了高频噪声的正弦波。
其结构如图4示。
图4叠加了高频噪声的正弦波框图
其中均匀白噪声如图5所示,我们可以控制白噪声的采样频率和幅值。
而巴特沃斯高通滤波器如图6所示,高截止频率:
fh是高截止频率。
默认值为0.45。
如滤波器类型为0(lowpass)或1(highpass),VI将忽略该参数。
滤波器类型为2(Bandpass)或3(Bandstop)时,fh必须大于低截止频率,fl并且满足奈奎斯特准则。
奈奎斯特准则(Nyquistcriterion):
f1<0.5fs,其中f1为截止频率,fs为采样频率。
低截止频率:
fl是低截止频率并且必须满足Nyquist准则。
默认值为0.125。
fl小于0或大于采样频率的一半,VI将把滤波后X设置为空数组并返回错误。
滤波器类型为2(Bandpass)或3(Bandstop)时,fl必须小于高截止频率(fh)。
介数:
阶数指定滤波器的阶数并且必须大于0。
默认值为2。
如阶数小于等于0,VI将把滤波后X设置为空数组并返回错误。
采样频率:
fs是采样频率并且必须大于0。
默认值为1.0。
如采样频率:
fs小于等于0,VI将把滤波后X设置为空数组并返回错误。
图5均匀白噪声发生器
图6巴特沃斯滤波器
4.低通滤波
将叠加了高频噪声的正弦波通过一个低通滤波器,使用低通滤波器对原始信号滤波,滤掉高频噪声。
其结构如图7示。
图7低通滤波
5.快速傅里叶变换
时域信号有一定缺陷,需要将时域信号转换为频域信号,将时域信号转换为频域信号的方法有很多,例如,Fourier变换,快速Fourier变换FFT,小波变换等。
下面使用Labview的FFT将上述的时域信号转换为频域信号,FFT的框图如图8所示,其中左端的X是FFt接受时域输入序列的输出;右端的FFT{X}是FFT的频域输出。
将滤波后的正弦波输入到X端(实数FFT.vi的输入为实数数组)连接后结构如图9所示。
输出FFT{X}表示的是一个复数,是FFT变换的结果[X],用ComplextoPolar函数可以将r和θ分开。
r越大,表示[X]序列在此处对应的频率成分越高。
[X]序列之间的频率间隔df=fs/N,其中fs表示信号的采样率,N表示采样点数。
因此由r序列的最大值对应的Index和df就可以确定该信号中哪个频率下的谐波成分最高,该频率f=df*r序列中最大值对应的Index。
图8FFT的框图
图9快速傅里叶变换处理结构图
四、性能的测试
1.单一频率正弦信号的FFT
首先使正弦信号输出的采样频率为500,周期为5的正弦波。
波形如图10所示。
图10正弦波
然后将正弦波输入到FFT变换中再经过ComplextoPolar函数(复数至极坐标转换)所得结果如图11所示。
图11单一频率正弦信号的FFT
2.叠加了高频噪声的正弦信号的FFT
使均匀白噪声的采样频率为500。
将白噪声通过一个巴特沃斯高通滤波器,此滤波器的采样频率为1000,低通截止频率为300。
再将白噪声与原正弦信号合并,其输出波形如图12所示。
图12叠加了高频噪声的正弦波
将叠加了高频噪声的正弦波输入到采样频率为1000,低通截止频率为10的巴特沃斯低通滤波器将高频噪声滤掉。
低通滤波后的波形如图13所示。
图13低通滤波后的波形
将低通滤波后的波形输入到FFT变换中去所得结果如图14所示。
图14FFT变换
五、结论
由以上结果可以看出在频率5Hz和495Hz处各有一条亮线,表明信号拥有一个5Hz和495Hz的频率分量。
由此表明单一频率正弦信号的FFT和叠加了高频噪声的正弦信号的FFT变换得以实现。
根据显示结果可以看出在波形图的图表中存在两个峰值分别在5Hz和495Hz处,在10Hz出出现峰值是因为在频率控件中输入的是10.又因为在此使用的是双边FFT,而双边FFT则显示正负频率,这里的495Hz实际上是-10Hz。
如果只需要显示正频率,则将双边FFT改为单边FFT。
六、性价比
此次课设所使用的是Labview,Labview又称虚拟仪器,由虚拟仪器这个名字我们就可以知道使用这个软件可以省去购买硬件所化去的费用。
使用这个软件可以完成很多硬件所能完成的测试。
虚拟仪器通过软件将计算机硬件资源与仪器硬件有机的融合为一体,从而把计算机强大的计算处理能力和仪器硬件的测量,控制能力结合在一起,大大缩小了仪器硬件的成本和体积,并通过软件实现对数据的显示、存储以及分析处理。
虚拟仪器具有传统独立仪器无法比拟的优势,但它并不否定传统仪器的作用,它们相互交叉又相互补充,相得益彰。
在高速度、高带宽和专业测试领域,独立仪器具有无可替代的优势。
在中低档测试领域,虚拟仪器可取代一部分独立仪器的工作,但完成复杂环境下的自动化测试是虚拟仪器的拿手好戏,是传统的独立仪器难以胜任的,甚至不可思议的工作。
使用labview实现快速傅里叶变换,结合FFT的节省运算量的优势,在傅里叶变换中我们可以大大提高工作效率。
七、课设体会及合理化建议
通过这次快速傅里叶变换的设计,我对虚拟仪器的应用及Labview的掌握程度又上升了一个台阶。
这次课程设计,不仅锻炼了自己动手实践操作的能力,而且学会了很多书本上学不到的东西,使实践与实际结合起来,达到能力的综合提高。
在整个设计中我们学会了在复杂问题前面怎样去分析,找到问题的关键所在,而且,认识到这种能力的重要性。
在此过程中,如果一个人做会遇到很多困难,很难完成什么,也让我明白了团队的精神的重要性,只有大家相互帮助,才能做出理想的成果。
这次设计也暴露出了我们的许多不足之处,理论联系实际的能力不够,我们还是缺乏工程实践的能力,这需要我们在以后的学习工作中多留心,积累经验。
参考文献
[1]阮奇桢编著.我和Labview.[M]北京航空航天大学出版社.2009年
[2]杨乐平、李海涛、杨磊编著.Labview程序设计与应用.[M]电子工业出版社.2005年
[3]吴杰编著.数字信号处理.[M]西安电子科技大学出版社.2009年
附录I总程序框图