首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LabVIEW编程实例:虚拟FFT分析仪设计

LabVIEW又称为G语言,简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。因此,LabVIEW软件在数据仿真、信号分析处理方面有着得天独厚的优势。

本文以一个具体实例,演示在LabVIEW中如何实现一个虚拟的FFT分析仪设计,包括采样信号的仿真、频域的FFT分析及数据结果的图形显示等功能。

这个例子也刚好对应了一个虚拟仪器所具有的三个基本组成环节的实现,即在软件中如何实现数据采集、分析处理及图形显示的功能。

实例说明

虚拟FFT分析仪前面板软件界面如下图所示:

虚拟FFT分析仪软件中包含的功能如下:

l 仿真信号产生功能,可产生能够叠加均匀白噪声的正弦波、三角波、方波及锯齿波等常用信号,对信号的频率、幅值等参数能够进行设置;

l FFT频谱分析功能,可进行平均参数设置(如平均模式、加权模式及平均次数等)、窗函数设置、重新开始平均设置等,同时也给出了平均是否完成的指示信息;

l 图形显示功能,包括原始时域仿真信号波形图及FFT频谱的幅度谱显示,且FFT幅度谱可设置是否为对数显示,在这个例子的基础上也可扩展为显示频谱的相位谱信息;

l 程序能够连续运行,仿真真实频谱仪的连续采集、分析及显示功能;

l 可设置全局的采样频率、采样点数等参数信息。

程序框图实现

本例软件界面包含的功能看上去虽然很复杂,但由于LabVIEW中函数的高度集成性,在框图程序中的实现代码并不复杂,如下图所示:

主程序使用一个While循环结构,每隔100ms执行一次循环。在循环内部主要调用了两个函数即“Basic Function Gernerator.vi”和“FFT Spectrum(Mag-Phase).vi”,分别实现仿真信号的产生和实现FFT频谱分析(得到幅值谱和相位谱)功能。在软件前面板上的参数控件几乎都是作为这两个函数的必要参数而存在的。

下面对这两个关键函数作一个简单的说明。

(1) “Basic Function Gernerator.vi”

该函数为LabVIEW中提供的基本函数发生器函数,调用该函数可产生正弦波、三角波、方波及锯齿波等常用信号,其输入输出参数如下图所示:

通过该函数产生的信号与均匀白噪声信号进行叠加后,即可得到本例所要求的仿真信号了。

(2) “FFT Spectrum(Mag-Phase).vi”

该函数功能是计算时域信号的平均FFT频谱。该VI通过幅度和相位返回FFT值。其输入输出参数如下图所示:

主要参数说明如下:

“重新开始平均”参数:指定VI是否重新启动所选平均过程。如重新开始平均的值为TRUE,VI重新启动所选平均过程。如重新开始平均的值为FALSE,VI不会重新启动所选平均过程。默认值为FALSE。 第一次调用该VI时,平均过程会自动开始。典型情况为:在平均过程中,主输入发生改变时,则会重新启动平均过程。

“窗”参数:用于设置时域信号的加窗函数。默认值为Hanning窗。其支持的窗函数类型包括矩形窗、三角窗、高斯窗、Hanning (默认)、Hamming、Blackman-Harris、Exact Blackman、Blackman、Flat Top、4阶/7阶Blackman-Harris、Low Sidelobe、Blackman Nuttall、Bartlett-Hanning、Bohman、Parzen、Welch、Kaiser、Dolph-Chebyshev等。

“平均参数”参数:该簇用于定义如何进行平均值计算。包括平均类型、加权类型和平均次数的设置,详细说明如下图所示:

“查看”参数:指定用于返回VI不同结果的方式,详细说明如下图所示:

“幅度”参数:返回平均FFT谱的幅度和频率范围。详细说明如下图所示:

运行上面的程序,即可在软件前面板中看到,程序能够连续不断产生时域仿真信号,并实时计算其FFT频谱信息,将结果在波形图控件上进行显示。同时,在程序运行过程中可修改仿真信号的参数以产生新的波形,也可以修改FFT分析中的如平均参数等信息,修改后也会得到正确的频谱信息。

总结

从这个例子中可以看出,在LabVIEW中实现信号的仿真、分析处理及图形显示功能,相对于其它编程语言如C语言,由于LabVIEW中函数功能的高度封装性以及控件的丰富多样性,其编程难度大大降低了,对于复杂信号处理算法的验证及结果的图形显示提供了极大的便利性。

本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190620A0IB1S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券