编程实现对波形数据的频谱分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以前的次序重新排序,然后按此顺序参加运算,可以实现"即位运算"提高存储单元的利用率。(一)复数的描述方法进行傅立叶变换时不可避免的要用到复数,而在VC中并没有现成的可用于表示复数的数据类型,可以自己定义一个含有两个成员变量的数据结构来表示复数,这两个成员变量可分别用于表示复数的实部与虚部:

6.61847E-08

700.00 1.35403E-04 1.35338E-04 6.53870E-08800.00 5.47602E-05

5.46963E-05

6.39612E-08900.00 1.20072E-05 1.19448E-05

6.23453E-08

1000.00 6.10719E-08 1.17757E-32 6.53870E-081100.00 8.05672E-067.99613E-06 6.05985E-081200.00 2.43706E-05 2.43095E-05 6.11450E-08

1300.00 3.93026E-05 3.92400E-05 6.25965E-081400.00 4.68226E-05 4.67581E-05 6.45128E-081500.00 4.50979E-05 4.50316E-05 6.62543E-08

1600.00 3.58664E-05 3.57992E-05 6.71930E-081700.00 2.30135E-05 2.29466E-05 6.69399E-081800.00 1.08697E-05 1.08042E-05 6.55073E-08

1900.00 2.74348E-06 2.68014E-05 6.33390E-082000.00 6.11826E-08 1.17757E-32 6.11826E-082100.00 2.25379E-06 2.19395E-06 5.98376E-08

2200.007.29243E-067.23256E-06 5.98625E-082300.00 1.25974E-05 1.25360E-05 6.13467E-082400.00 1.59746E-05 1.59107E-05 6.38421E-08

2500.00 1.62779E-05 1.62114E-05 6.64915E-082600.00 1.36254E-05 1.35571E-05 6.83226E-082700.009.16539E-06 9.09679E-06 6.86075E-08

2800.00 4.53216E-06 4.46500E-06 6.71550E-082900.00 1.21487E-06 1.15945E-06 6.44190E-08

注:在此,FFT运算结果都倍乘了系数10毫秒(0.01秒)。在分析结果中产生了误差,是由于待分析的连续时间信号不具备离散性或周期性,也可能有无限长度。为了适应

FFT方法的需要,对波形进行了抽样和截断,这样再用程序分析采样数据必然会引入误差,从分析结果可以看出,频率越高,误差波动也越大,此分析结果产生的误差在允许范围之内,是一个可以满意的近似。实践证明,本程序的算法是正确可靠的。小结:DFT尤其是FFT的应用已遍及各个科学领域,"DFT的应用"与"FFT的应用"几乎成为同义语。通过本文介绍和程序示例可以清楚的看到FFT方法在直接处理离散信号数据的作用,而且也可以很好的用于对连续时间信号分析的逼近。本程序在Windows2000 Professional下、由Microsoft Visual C++ 6.0编译通过

用VB实现数字波形显示程序减小字体增大字体作者:佚名来源:本站整理发布时间:2009-07-15 18:03:17

id=126063>

摘要:本文详细介绍了在VB集成环境下数字波形高速显示的方法,同时对双通道波形显示和数字滤波方法也进行了介绍。

关键词:数字;波形;显示;滤波

1 前言:

随着计算机技术及电子技术的发展,数字采集技术在检测领域的应用越来越广泛,检测速度越来越高,检测的数据量越来越大,特别是在无损检测领域,将检测数据通过计算机处理后绘制出波形,并实时显示,对及时发现伤损、分析伤损具有重要意义。

2 波形显示

检测数据通常是离散的数据,将离散的数据绘制出波形,可通过在两点间连接线段的方法实现。

2.1 用Line方法显示波形

VB提供了Line画直线方法,可在窗体上增加一个图片框控件,适当设置图片的大小和背景颜色,用Line方法将离散数据按检测顺序连接成线段,即可将波形显示在图片框中。但该方法显示波形速度较慢,不适合高速显示的应用。

2.2 Windows API函数显示波形

在VB中两点间连线的另一种方法是用Windows API函数,Win32 API提供了以下两个函数,联合使用可实现波形的快速显示,经过测试,显示速度比使用Line方法快70%以上。

LineTo函数:

函数功能:画出由数组定义的点连接的一系列线段。

函数原型:BOOL LineTo(HDC hdc,int nXEnd,int nYEnd);

参数:

hdc:设备环境句柄。

nXEnd:定义线段终点的X坐标。

nYEnd:定义线段终点的Y坐标。

返回值:若函数调用成功,则返回非0值;若函数调用失败,则返回值为0。

MoveToEx函数:

函数功能:将当前位置更新为指定的点,并有选择的返回原先的位置。

函数原型:BOOL MoveToEx (HDC hdc,int X,int Y,LPPOINT lpPoint);

参数:

hdc:设备环境句柄。

X:定义新位置的X坐标(逻辑坐标)。

Y:定义新位置的Y坐标(逻辑坐标)。

lpPoint:指向一个POINT结构,结构中存放原先的位置。若此参数为NULL,则不返回原先的位置

返回值:若函数调用成功,则返回非0值;若函数调用失败,则返回值为0。

在连接线段时,首先将检测数据放入一个数组中,用MoveToEx函数定位画线的起始点坐标,然后用LineTo函数画出起始点至下一个点之间的线段,再用MoveToEx将画线的起始点定位到下一个点,继续用LineTo函数画线,如此循环,即可将离散点连接成波形。

例:

zz = MoveToEx(Picture1.hdc, i, Mwave(i ), LpPoint1)

zz = LineTo(Picture1.hdc, i, Mwave(i+1))

实时波形显示界面

通常计算机需要接收外部实时发送的数据并用十分形象的方式显示出来。例如柱状图、饼图等等。本应用程序则采用波形的形式显示,并接将之设计为可以接收多路数据的波形显示界面。本应用程序在VS2008环境下调试通过,源码下载连接如下

/5120804.html。

一.程序界面

点击该图放大

上图中显示了两路波形即三角波和正弦波,当然这两路波形是由程序计算出来的并不是从外部接收的。实际工作中则可以配合串口通讯设备接收它发来的数据并显示出来。

二.波形控件类介绍

本程序的实现主要依赖于那个波形显示控件。从下载连接那里可以下载该源码,里面的文件中,2DPushGraph.h和2DPushGraph.cpp即是该控件的类的定义文件和实现文件。分析之后得到该类的一些信息。

其成员函数包括:

程序代码:

COLORREF m_crTextColor;//标签文字颜色

COLORREF m_crBGColor;//背景颜色

COLORREF m_crGridColor;//栅格颜色

CString m_strMaxLabel;//最大值之处的标签

CString m_strMinLabel;//最小值之处的标签

bool m_bShowMinMax;//最小最大值显示

bool m_bShowGrid;//是否显示栅格

bool m_bStylesModified;//是否被修改

int m_nMoveOffset;//偏移

int m_nMaxCoords;//最大缓冲

int m_nMaxPeek;//显示数据的最大值

int m_nMinPeek;//显示数据的最小值

int m_nGridSize;//栅格间距

相关文档
最新文档