labview傅立叶变换在进入程序面板,在Function面板中搜索creat histogram,选中后拖到前面板,输入信号接到signal,输出Histogram既是频谱。
从实现物理系统中采集来的数据一般采用时域来表示,给出了被采样信号的幅值和相位信息,实际上在时域中很多有用的信息隐藏着,只有当将采样信号变换到频域中后,很多有用信息才能被提取出来.将离散采样信号由时域变换到频域的一种常用算法是离散傅里叶交换(DFT)。
由于直接采用DFT算法效率较低,在应用中一般采用它的一种快速算法,即快速傅里叶变换(Fast Fourier Transformation).本文基于NI公司推出的虚拟仪器软件LabView2013实现快速傅里叶变换(FFT)。
编写代码:
测试测量:LABVIEW [6] 最初就是为测试测量而设计的,因而测试测量也就是LABVIEW最广泛的应用领域。经过多年的发展,LABVIEW在测试测量领域获得了广泛的承认。至今,大多数主流的测试仪器、数据采集设备都拥有专门的LabVIEW驱动程序。
使用LabVIEW可以非常便捷的控制这些硬件设备。同时,用户也可以十分方便地找到各种适用于测试测量领域的LabVIEW工具包。
这些工具包几乎覆盖了用户所需的所有功能,用户在这些工具包的基础上再开发程序就容易多了。有时甚至于只需简单地调用几个工具包中的函数,就可以组成一个完整的测试测量应用程序。
按照程序框图来看是这样的1.for循环输出了一个文件中的一维数组,这个数组是经过了特殊索引规则后的数组。
2.一维数组连接了一个拆分一维数组,前512个元素构成的数组是时域信号,后面的数据是单片机的频谱。
3.时域信号连接了Butterworth滤波器,经滤波后的数据再连接一个汉宁窗,FFT(X)变换得到一个复数组,做复数至极坐标转换之后取r这列数组,除以数组大小,实际是得到了幅度谱,连接下面theta的话就是做的是相位谱。这个步骤完全是FFT(x)的算法,你拿来用就行。
4.做了两次平方这,我明白第一次平方有可能是为了做功率谱,但是第二次何解?有可能是编程写错了
5.告诉你一个更好的方法,直接用“编程——信号处理——波形测量——FFT频谱(幅度-相位)”这个函数
基本的数据流是:打开TDMS文件(这个vi自带文件对话框很方便)-------读取TDMS文件(组名和通道名是你写入这个文件的时候设定的)---------fft vi(将读到数据直接连上,给个采样率)。这个方法和简单,但是有个问题,如果你的数据量很大的话,内存可能不够用。解决的办法是分段读取数据,用一个while循环(读取TDMS文件vi可以设定歧视位置的,文件结束后跳出循环),这样不能算所有数据的频谱,如果非要算所有数据的频谱,您只能换个更牛叉的电脑啦!希望对你有帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)