Matlab-fft函数.doc
《Matlab-fft函数.doc》由会员分享,可在线阅读,更多相关《Matlab-fft函数.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流Matlab-fft函数.精品文档.摘 要 本文介绍了Matlab数学工具箱中fft函数及LabVIEW自带VI算法在谐波分析中的具体应用。同时,实现了Matlab和LabVIEW的混合编程及谐波分析。本文设计了RC测试电路及毫欧电阻测量电路,并介绍了电路原理,通过调试,可以实现毫欧电阻的精确测量,及RC测量电路中测量R,C的工作。关键词: 谐波分析; MATLAB与LabVIEW混合编程; 数字式毫欧级电阻测量仪; RC测量电路ABSTRACT This article describes the mathematical toolbox
2、Matlab fft function and the LabVIEW VI algorithm in harmonic analysis comes with the specific application. At the same time, to achieve a mix of Matlab and LabVIEW programming and harmonic analysis. RC paper designed to test the circuit and milliohms resistance measurement circuit, and circuit theor
3、y introduced through debugging, you can achieve accurate measurement of milli-ohm, and the RC measurement circuit to measure R, Cs work.Key words: Harmonic analysis; Hybrid MATLAB and LabVIEW programming; Digital cents European level resistance measuring instrument; RC measurement circuit目 录摘 要 扉页AB
4、STRACT 1一、基于matlab进行谐波分析 3二、基于Labview(VI)算法进行谐波分析 9 三、LabVIEW和MATLAB的混合编程 16四、毫欧级电阻测量电路的设计 24五、RC测量模块的设计28结 语 32参考文献 32 第一章 基于 MATLAB(FFT函数)进行谐波分析离散傅里叶变换:任何系统的相应都可以看作是一个输入对系统各个频率响应的加权和,这就是数字信号处理理论中的离散时间傅里叶变换(DTFT)。离散傅立叶变换(DFT) 是数字信号处理中最核心的数学工具。它可以实现信号在频域的离散化,从而使利用计算机在频域进行信号处理成为可能。特别是由于DFT有多种快速算法,又可以
5、使信号处理的速度大大提高。同时,它又与信号处理的另两个重要工具:傅立叶变换和Z变换之间有着紧密的联系。因此,理解并熟练掌握离散傅立叶变换(DFT) 这个工具,对于数字信号处理有着至关重要的意义。 设x(n) 是一个长度为M的有限长序列,则x(n) 的N 点离散傅里叶变换为: 由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加 快速傅里叶变换法,一次复数加法等于两次实 快速傅里叶变换数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次
6、运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运
7、算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。 在MATLAB信号处理工具箱中,提供了实现快速傅里叶变换(FFT)的函数 fft 。 主要调用格式为: X=fft(x,N)-采用FFT算法球离散序列的DFT编写的代码以x(n),xx(n)为谐波分析所处理的初始函数.首先,我们先测试正弦波,三角波,方波.步骤:1 打开matlab 2 点击左上角File NewM File. 弹出窗口. 3 将程序写入. 4 运行 5 得出三张频谱图 6 分析比较后,得出结论模拟的三个波形如下:%正弦波:xn=exp(j*pi/8*n); ( for:n=0
8、to 15 ) %三角波:xxn=0,3(1/2),6(1/2),9(1/2),12(1/2),9(1/2),6(1/2),3(1/2),0,-3(1/2),-6(1/2),-9(1/2),-12(1/2),-9(1/2),-6(1/2),-3(1/2);%方波: xxxn=-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2)编写M脚本文件:clear ,close all N=
9、16; % 共采集16点n=0:N-1;xn=exp(j*pi/8*n); %正弦波序列xxn=0,3(1/2),6(1/2),9(1/2),12(1/2),9(1/2),6(1/2),3(1/2),0,-3(1/2),-6(1/2),-9(1/2),-12(1/2),-9(1/2),-6(1/2),-3(1/2),;%三角波序列xxxn=-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),-12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),12(1/2),1
10、2(1/2) %方波序列Xk=fft(xn,N); %调用FFT函数XXk=fft(xxn,N);XXXk=fft(xxxn,N);figure(1)subplot(2,2,1);stem(n,xn,k.);title(2011-05-20 16:36 16点正弦波序列),xlabel(n),ylabel(x(n)subplot(2,2,3);k=0:N-1;stem(k,abs(Xk),k.)title(2011-05-20 16:36 16点DFTx(n),xlabel(k),ylabel(|X(k)|)figure(2)subplot(2,2,1);stem(n,xxn,k.);titl
11、e(2011-05-20 16:36 16点三角波序列),xlabel(n),ylabel(xx(n)subplot(2,2,3);k=0:N-1;stem(k,abs(XXk),k)title(2011-05-20 16:36 16点DFTxx(n)),xlabel(k),ylabel(|XX(k)|)figure(3)subplot(2,2,1);stem(n,xxxn,k.);title(2011-05-20 16:36 16点方波序列),xlabel(n),ylabel(xxx(n)subplot(2,2,3);k=0:N-1;stem(k,abs(XXXk),k)title(2011
12、-05-20 16:36 16点DFTxxx(n)),xlabel(k),ylabel(|XXX(k)|)程序截图:频谱图: 正弦波 三角波 方波由图可看出,正弦波只存在基波,其幅值与信号发生器所输入得振幅是相同的用信号发生器输出方波与三角波所产生的谐波就丰富了。我们用的是同幅同频波形,所产生的基波幅值是不相同的。从三个图中,我们还可以看出高次谐波的幅值趋势,这与理论所得基本吻合。周期信号频谱具有如下三个特点:a. 离散性,即周期信号的频谱是离散的,有一系列不连续的谱线组成。b.谐波性,即周期信号的谱线只出现在原周期信号角频(基波频率)w的整数频率点上,且谱线间的间隔等于w。c.收敛性,即谐波
13、的幅度随谐波次数的增高而减小。 第二章 基于 LabVIEW (VI算法) 进行谐波分析LabVIEW提供了一组方便我们调用的VI。它的自功率谱VI-Auto Power Spectrum用FFT求出时域信号的自功率谱。谐波分析VI-Harmonic Analyzer在这个基础上给出各次谐波的频率和幅值。谐波分析面板设计进行傅立叶变换的数据在理论上应为无限长的离散数据。但是实际上,我们只能对有限长的信号进行分析处理,对采样离散数据进行截取。而如果只取采样时间内有限数据,这样就存在频率泄漏。在本设计中所利用的加窗的方法就是用来减少频率泄漏。这里用到的加窗函数有:汉宁窗、海明窗、BLACKMAN窗
14、、矩形窗等。谐波分析程序框图的设计 图2-2 加窗使无限长采样信号就变成了有限长的信号数据。然后只对加窗后的数据进行FFT快速傅立叶变换,然后计算出信号的幅值频。谐波分析主要有两部分组成对应框图程序分为两部分:一是数据采集和数字信号的处理,二是显示部分。数据采集以前已经完成,接着两个子函数分别为加窗函数和自功率谱计算函数。2-3 加窗函数图标与连线方式 其中Scaled Time Domain 加窗函数图标为如上图2-3所示,它有两输入参数分别为要加窗的Waveform(即要进行加窗处理的波形数据)输入和Window(窗函数)输入,用户根据不同的需求来选择不同的窗函数输入。并通过一个条件结构来
15、实现选择。为Chebyshev滤波器,调用Chebyshev系数VI后,Chebyshev滤波器VI将调用IIR级联滤波器VI,获取一个Chebyshev滤波后X序列,然后进行捆绑输出波形。图2-4 幅值频谱程序框图图2-4中是幅值频谱程序框图,在这里使用“Auto Power Spectrum” 函数来完成功率谱计算,计算结果通过“Harmonic Analyzer”模块进行谐波分析后形成幅值频谱。“Auto Power Spectrum”函数的具体功能是:输入的加窗离散采集数据,进行自相关运算,再把运算结果进行FFT快速傅立叶变换,得到采样波形信号的幅值频谱。“Harmonic Analy
16、zer”模块是用于对幅值谱显示的数据处理。如图2-5所示,为频谱分析程序框图频谱,这里采用的分析方法是直接利用LABVIEW 中的real FFT模块化子VI进行快速傅立叶变换,再将FFT变换所输出的复数分成实数和虚部两部分,它们分别是幅值和相位。为复数至极坐标转换,利用其实部即(幅值)和频率便构成了频谱。图2-5 频谱分析程序框图 调试及运行在实际应用中,数据采样频率对最终谐波分析结果的准确性有决定性的影响,依据采样定理,应使 2 。另外,通过数学推导可知,若采样点数不大于被分析的谐波次数,在大于采样点数的相应谐波次数的谐波值将出现循环,例如,若采样点数为12,则第13次以后谐波值将不正确。
17、在谐波分析中波形周期的确定,即对周期波形过零点的判断,对谐波分析结果的准确性也有非常大的影响。实际应用中,元件和回路的选取和设计,也对最终谐波分析结果的准确性产生影响。用信号发生器分别产生频率为50HZ的正弦波,方波及三角波,关闭低通滤波,不加窗,在线分析,通过USB2008板卡,连入电脑,运行所设程序,得到谐波分析后的数据,以下为三种波形的谐波分析图。由图2-6可看出,正弦波只存在基波,其幅值与信号发生器所输入得振幅是相同的。图2-7和2-8中,用信号发生器输出方波与三角波所产生的谐波就丰富了。我们用的是同幅同频波形,所产生的基波幅值是不相同的,方波的基波幅值最大,三角波最小。同时从以下三个
18、图中,我们还可以看出高次谐波的幅值趋势,这与理论所得基本吻合。周期信号频谱具有如下三个特点:a. 离散性,即周期信号的频谱是离散的,有一系列不连续的谱线组成。b.谐波性,即周期信号的谱线只出现在原周期信号角频(基波频率)w的整数频率点上,且谱线间的间隔等于w。c.收敛性,即谐波的幅度随谐波次数的增高而减小。LabVIEW正弦波的谐波分析图图2-6 Matlab谐波分析图LabVIEW三角波的谐波分析图2-7 Matlab三角波谐波分析图LabVIEW方波的谐波分析图图2-8 Matlab方波谐波分析图 本设计在谐波分析中的幅值频谱分析部分是基本正确的。顺利完成调用LabVIEW自带VI算法完成
19、谐波分析的工作。但基于Labview自带算法处理的谐波畸变率很高.所以在接下来的混合编程中,我选择调用matlab的FFT函数替换LabVIEW自身算法处理谐波分析. 第三章LabVIEW 和 MATLAB 的混合编程 LabVIEW是Laboratory Virtual Instrument Engi2neeringWorkbench (实验室虚拟仪器集成环境)的简称,是由美国国家仪器公司(National Instruments,N I)推出的一个功能强大而又灵活的仪器和分析软件应用开发工具。LabV IEW 程序称为虚拟仪器或简称为V I,每个V I都由前面板和框图程序以及图标/ 连接端
20、口三部分组成。LabV IEW不同于基于文本的编程语言(如Fortran和C) ,它是一种图形编程语言通常称为G编程语言,其编程过程就是通过图形符号描述程序的行为。LabV IEW 使用的是科学家和工程师们所熟悉的术语,还使用了易于识别的构造G语言的图形符号。即使具有很少编程经验的人也能学会使用LabV IEW,并能够发现和了解一些有用的基本编程原则 1 。LabV IEW是工程人员开发虚拟仪器常用的一种软件工具。它有以下特点:(1)图形化的编程方式,设计者无需写任何文本格式的代码,是真正的工程师的语言;(2)提供丰富的数据采集、分析及存储的库函数;(3)既提供了传统的程序调试手段,如设置断点
21、,单步运行,同时提供独到的高亮执行工具,使程序动画式运行,利于设计者观察到程序运行的细节,使程序的调试和开发更为便捷;(4) 32bit的编译器编译成32bit的编译程序,保证用户数据采集,测试和测量方案的高速执行;(5)囊括了PCI、GP IB. PXI、VXI、RS2232 /485在内的各种仪器通信总线标准的所有功能函数,使得不懂得总线标准的开发者也能够驱动不同总线标准的接口设备与仪器;(6)提供大量与外部代码或软件进行连接的机制,诸如DLL (动态连接库)、DDE (共享库) ,ActiveX等;(7)强大的Internet功能,支持常用的网络协议,方便网络、远程测控仪器的开发。 MA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab fft 函数
限制150内