1、1/11信号的采集及其频率和频谱测量一 实验目的1 学习在 CVI 环境里面使用非 NI 数据采集卡。2 学习用过零法计算被测每个周期采样点数。3 学习数据采集卡采样间隔的测定。4 学习计算被测信号的频率和周期。5 熟悉 FFT 算法原理。二 实验原理CVI 环境里非 NI 数据采集卡的驱动1.1 在 CVI 编辑器中将库文件 PCI_Dask.lib 添加到工程中。1.2 非 NI 数据采集卡头文件的添加在 CVI 源文件编辑器中添加 #include “Dask.h“ ,如下图所示#include #include #include #include “频率.h“ /在此添加#includ
2、e “Dask.h“ #define MAX 9216 static int panelHandle;I16 CardID;2 零计数法测频率原理不含直流分量的正弦波每个周期内都应该有两个过零点,根据每两个过零点之间的采样次数我们可以得到每个周期的采样点数 N,由于采样时间间隔t 是由数据采集卡决2/11定的,是一个确定值。所以可以得到正弦波的周期为 N*t,从而可以计算出频率 f.对被测信号 x(t)进行数据采集,得到被测信号序列为 x(n),n=1,2,3.k。我们把该信号序列中上次采样为负值,本次采样为正值的点记为正过零点,两个正过零点的时间间隔 t 为:T=kt t-采样时间间隔k-两
3、次过零点时间内采样的次数t-两个过零点之间的时间间隔则被测波形的频率 f 为:F=1/t=1/( kt)3 虚拟示波器的基本原理实测是指该虚拟仪器可以测量实际的信号,这时需要数据采集卡,将所测得电量信号采集到计算机中,由软件完成波形的显示。如下图所示信号采集卡 计算机 C V I 软件系统由计算机对数据采集卡发出指令,启动采集卡,计算机将采集到的信号数据进行存储,处理和显示,从而实现虚拟示波器。4 PCI_9119 数据采集卡使用方法性能指标:16 路单端模拟输入通道:A/D 采样速率 100KHz:模拟输入电压范围为10V, 5V, 2.5V, 1.25V, 0.625V3 种 A/D 触发
4、方式,软件触发,外部脉冲触发和可编程定时触发。三 程序设计和实验内容编写波形采集程序,在 CVI 中设计的简单仪器面板中的波形显示和信号频率界面如下3/11在仪器面板中,添加一个波形显示 GRAPH 控件,一个 edit numeric 控件 channel,一个NUMERIC 控件显示被测信号的频率,两个 command button 按钮,分别控制采集的开始和停止。四 信号频谱分析的主程序流程图主程序框图开始信号采集点数采集实验信号调绘图子程序绘制时间序列波形调 FFT 子程序对信号进行 DFT求幅度谱| X(K)|调绘图子程序绘制幅频曲线结束4/11快速傅里叶变换 FFT(1) FFT
5、不是一种新的变换,而是 DFT 的快速算法。(2) 直接 DFT 计算的复杂度: )(2NO计算 DFT 需要: 次复数乘法; 次复数加法。*2*N(3) FFT 算法推导 :(i) 第 L 次迭代中对偶结点值的计算公式为:, 是循环控制变量。)(2)()()(11LrKBRPNWKxxKrL PNLLL(ii) 对偶结点的关系如图 2 所示: 1 )(LPNW 1 )(LPN )(1Lx )(1LKx )(LKx )(LKx 图 2 FFT 中对偶结点关系图(i) 旋转因子: 被称为旋转因子,可预先算好并保存。kNW(ii) 整序:经过 r 次迭代后,得到结果 ,实际结果应是brrkx10,
6、所以流程的最后一步是按下标的正常二进制顺序对结果进行brkX01整序。(4) FFT 算法特点: ( )r2(i) 共需 次迭代;(ii) 第 次迭代对偶结点的偶距为 ,因此一组结点覆)1(rL LrLNK2/盖的序号个数是 。12)(2LLNK(iii)第 次迭代结点的组数为 。)(r 1)(/L(iv) 可以预先计算好,而且 的变化范围是 。LPNWLP20(5) FFT 算法流程: ( )r(i)初始化: ;10,)0Nnxn(ii) 第 次迭代:1(rL(a) 下标控制变量初始化 ;LK(b) “结点对”的个数初始化 ;0um(c) DOnumWHIEL)2(5/11 按对偶结点对的计
7、算公式进行置位运算,得到 和 的值;)(LKx)(L ; ;1LK1num 跳过已经计算过的结点(即上面 所对应的那些结点):LK;N2/ 如果 ,转到 b)继续计算下一组结点;否则结束本次迭代。L(iii) 当 次迭代全部完成后,对结果 按下标二进制位进行整序,r )10)(1Nkxr从而得到结果 。)0)(kX(6) FFT 算法复杂度分析: ( , 预先算好)r2kNW(i) 一个对偶结点对的计算需要 2 次复数加法和 1 次复数乘法(ii) 对任一次迭代,共有 N/2 对结点,因此共需 N 次复数加法和 N /2 次复数乘法(iii) 次迭代的总计算量为:复数加法次数 ,复数乘法次数为
8、r r2logN2log1/(iv)算法复杂度为 )l(OIDFT 同样可用 FFT 实现,算法复杂度也是 。)log(2NO过零法计算频率的程序代码如下:#include #include #include #include “频率.h“#include “Dask.h“ #define MAX 9216 static int panelHandle;I16 CardID;int main (int argc, char *argv)if (InitCVIRTE (0, argv, 0) = 0)return -1; /* out of memory */if (panelHandle =
9、LoadPanel (0, “频率.uir“, PANEL) 8) break; sumpo = signpok-1-signpo0;f= 100000.0/sumpo*(k-1);SetCtrlVal (panelHandle, PANEL_NUMERIC, f);DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);if (sumpo*5)MAX) PlotY (panelHandle, PANEL_GRAPH, volt2, MAX, VAL_DOUBLE, 7/11VAL_FAT_LINE, VAL_EMP
10、TY_SQUARE,VAL_SOLID, 0, VAL_RED);elsePlotY (panelHandle, PANEL_GRAPH, volt2, sumpo*5, VAL_DOUBLE, VAL_FAT_LINE, VAL_EMPTY_SQUARE,VAL_SOLID, 0, VAL_RED);break;return 0;int CVICALLBACK END (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)switch (event)case EVENT_CO
11、MMIT:QuitUserInterface (0);break;return 0;程序的运行界面如下图:运行检验信号源的输出频率f11000 800 600 500 400“虚拟频率计”的显示频率1000 801.2 600 500.3 400.1误差f=f1-f2 0 1.2 0 0.3 0.1求取信号的频率和频谱的子程序如下:int CVICALLBACK CalFFT (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)8/11double *phase;double
12、 *img;int i;switch (event)case EVENT_COMMIT:img=malloc(samples*sizeof(double);for(i=0;isamples;i+)imgi=0;mag=malloc(samples*sizeof(double); phase=malloc(samples*sizeof(double); FFT(wave,img,samples);ToPolar1D(wave,img,samples,mag,phase);DeleteGraphPlot(panelHandle,PANEL_SHOW,-1,VAL_IMMEDIATE_DRAW);P
13、lotY(panelHandle,PANEL_SHOW,mag,samples,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);free(wave);free(img);free(phase);break;return 0;输入信号的每个周期 256 点的 FFT 频谱9/11输入信号的每个周期 512 点的 FFT 频谱输入信号的每个周期 1024 点的 FFT 频谱N 点序列的 DFT 和 IDFT 变换定义式如下:, 10knNnXkxW10NknNkxXW利用旋转因子 具有周期性,可以得到快速算法(FFT )
14、 。2jnkknNe由 DFT 求出的离散谱 是离散的周期函数,周期为)()(ZkNTHkS、离散间隔为 。离散谱关于变元 k 的周期为 N。ssfTNf1/0 01fTfs输出谱线的间隔 L 过小,使得输出谱线间隔过大,抑制措施:增大采样长度 L。利用 DFT 对连续时间信号处理时注意的问题在信号处理过程中经常要对信号进行频谱分析,频谱分析,就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析,由于积分原因,不便于直接用计算机进行计算处理,使其应用受到限制。DFT 是一种时域和频域均离散化的变换,适合数值运算,成为分析离1fLs10/11散信号和系统的有力工具。因此,对连续信号和系统的频谱分
15、析,可以通过时域抽样,利用 DFT 进行近似频谱分析。在工程实际中,经常处理的连续信号 ,一般是非周期的,其频谱函数 也是连续非周期的。为了利用 DFT 对 进行频谱分析,首先需要对 进行时域抽样 (设抽样周期为 ),得到离散时间信号 ,再对 进行 DFT,得到的 则是 的傅里叶变换 在频率区间 上的 点等间隔抽样。这里 和 均为有限长序列。然而,在连续信号的抽样却要受 Nyquist 抽样定理的限制。由傅里叶变换理论知道,若信号持续时间有限长,则其频谱无限宽;若信号的频谱有限宽,则其持续时间无限长。所以严格地讲,持续时间有限的带限信号是不存在的。而实际所处理的连续信号,一般是时限信号,即其频
16、谱无限宽。显然,对时限信号进行抽样时,不满足抽样定理 ,出现谱混叠失真。或者说,按抽样定理抽样时,抽样序列 应为无限长,不满足 DFT 的变换条件。因此,在实际应用中,对频谱很宽的信号,为防止时域抽样后产生频谱混叠失真,通常用预滤波法滤除幅度较小的高频成分,使连续信号的带宽小于折叠频率。对于持续时间很长的信号,抽样点数太多以致无法存贮和计算,只好截取有限点进行 DFT。由上述可见,用 DFT 对连续信号进行谱分析必然是近似的,其近似程度与信号带宽、抽样频率和截取长度有关。实际上从工程角度看,滤除幅度很小的高频成分和截去幅度很小的部分时间信号是允许的。对于持续时间很长的信号,抽样点数太多以致无法
17、存贮和计算,只好截短形成有限长序列进行 DFT。其中, 称为矩形窗函数。序列 进行截短处理后,其()()NynxR()NRn()xn频谱显然与原频谱不一样,与原频谱相比,将发生频谱泄漏现象。频谱泄漏使频谱变得模糊,频谱分辨率降低。同时,在原主谱线两边形成很多旁瓣,引起不同频率分量间的干扰,影响频谱分辨率。称这种干扰为谱间干扰。特别是强信号谱的旁瓣可能湮没弱信号的主谱线,或者可能把强信号谱的旁瓣误认为是另一信号的谱线,使频谱分析产生偏差。上述两种影响都是由于对信号进行截断引起的,我们统称为截断效应。减少泄漏的方法,首先是取更长的数据,也就是窗宽加宽,当然数据也不能太长,否则会增加运算量和存储量;
18、其次是数据不要突然截断,也就是说不要加矩形窗,而是要缓慢截断。栅栏效应在利用 DFT 对连续时间信号处理时,先对 进行时域抽样,得到 ,再对 进行 DFT,得到的 是 的傅里叶变换 在频率区间 上的 点等间隔抽样。也就是说,这种频谱分析,我们只能知道 个离散的频谱值,各个抽样点之间的频谱函数是不知道的。这就好像从 个栅栏缝隙中观察信号的频谱情况,仅得到 个缝隙中看到的频谱函数值。称这种现象为栅栏效应。由于栅栏效应,有可能漏掉大的、重要的频谱分量。为了把原来被漏掉的频谱分量检测出来,我们可以采用在原序列尾部补零的方法,增加序列长度 ,即增加 DFT 变换的点数。这样,可以增加频域抽样点数和抽样点位置,使得原来被漏掉的某些频谱分量被检测出来。对于连续信号的谱分析,只要抽样频率 足够高,且抽样点数满足频率分辨率要求,就可以认为 DFT 后所得的离散频谱的包络近似代表原信号的频谱。Nyquist 稳定性判据设 G(s)为系统开环传递函数,在 G(s)中取 sj 得到系统开环频率响应 G(j) 。当参变量 由 0 变化到 时,可在复数平面上画出 G(j)随 的变化轨迹,称为奈奎斯特图。奈奎斯特稳定判据的基本形式表明,如果系统开环传递函数 G(s)在 s 复数平面的虚轴 j 上
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。