1、1第 2 章 信号处理控件2.1 概述2.1.1 信号处理信号与信息处理学科是信息科学的重要组成部分,该学科水平的高低反映一个国家的整体科技水平。数字信号处理的理论和方法日新月异地高速发展,应用领域日益广泛,几乎涉及到各个技术领域,它是推动和加速各学科发展的重要基础。数字信号处理是六十年代随着数字计算技术和大规模集成电路的迅速发展而发展起来的一门新技术和新学科。它是把信号变成数字或符号表示的序列,然后通过计算机或专用数字信号处理设备,用数值计算的方式处理这些序列。它可对信号进行滤波、变换、估计、识别、谱分析等等,处理的目的可以是估计信号的特征参数,也可以是把信号变成更符合人们要求的形式。虽然数
2、字信号处理是一个生机勃勃迅速发展的学科,但其中许多理论和算法都已完善,并广泛地应用于雷达、声纳、航空航天、生物医学、天文、振动工程、自动控制、遥测遥感、无损检测等几乎所有的技术领域。随着科学技术的高度发展,人们需要处理越来越多、越来越复杂的各种数字信号。由于信号处理的理论和算法往往比较复杂,而又缺乏通用信号处理的工具,人们经常面对浩如烟海的数据束手无策,无法处理,绕而走之。随着个人计算机(PC)性能价格比的不断提高,高速度、大内存和大硬盘个人计算机的出现,复杂的信号使用个人计算机进行处理已能满足许多应用场合的需求。以前我们把信号处理的研究局限在其方法的研究,只有在需要时才去研制相应的软硬件,这
3、样势必造成方法选择局限、重复劳动过多、牵涉精力太大,因此很有必要把信号处理当做一个系统来研究,以实现信号处理工程化,把各种信号处理方法及其图形图象表示加以集成,形成个人计算机上数字信号处理通用开发工具,对于加快、加深和推广数字信号处理的应用具有十分重要的意义。2.1.2 微软 ActiveX 控件计算机软件的设计经过了由结构化编程到面向对象编程的转变。结构化编程以函数为中心,可以编制精炼小巧的程序,但在编制大型程序时却难以维护。面向对象编程以所需处理的数据为中心,形成数据和代码融为一体的独立实体,是编制大型复杂程序的有效方法。控件作为面向对象编程的功能部件,具备可扩展、可复用、便于组合等特点,
4、使应用软件的研制进入了分工协作和集成组合的时代,有了这些功能部件,就可以灵活、方便地构筑起满足不同需要的应用程序,节省大量的开发时间和经费,避免许多低层次的重复开发,并有利于提高软件的质量和可靠性,也就是说,使可复用的控件可用更少的人、更少2的经费、更少的时间开发出更多、更好的产品。VBX、OCX 和 ActiveX 是控件的呈现形式,也是控件在不同发展时期的产物。最早的控件是 VBX(Visual Basic Extension),它可以在 Microsoft Visual C+, Borland C+, Delphi, PowerBuilder, Visual Basic 等应用程序开发环
5、境中使用,但 VBX 只能用在 16 位程序的开发中;目前 VBX 正被 OCX 所代替,它支持 16 位和 32 位开发环境;随着 INTERNET 网络的发展,微软公司把 OLE 技术和 OCX 技术融为一体并加以改进,形成了 ActiveX 控件规范,它把 OLE 控件规范加以精练,使得这些控件更加小巧而且效率更高,便于进行 Internet 访问。ActiveX 可以做到操作系统级兼容,即在 WINDOWS 98、WINDOWS 2000、WINDOWS XP 平台下运行,支持 Windows 平台下各类开发工具,如 Visual C+,Visual Basic,VBScript,Vi
6、sual Foxpro 和 PowerBuilder 等等。控件拥有可读写的属性、执行确定操作的方法,以及对用户交互进行响应的事件。通过控件的属性、方法和事件,对控件进行设置、操作并与其它控件相联系,达到构筑应用程序的目的。2.1.3 信号处理与图形信号处理中的图形表示是科学计算可视化(Visualization in Scientific ComputingViSC)的一个分支,它凭借计算机的能力把信号处理中产生的数字信息转变成直观的、易于为研究人员理解的、可以进行交互分析的、以图形或图象形式表示的静态或动态画面,从而加快与加深研究人员对信号处理过程的理解,发现通过数值信息所不能观察到的现象
7、,操纵信号处理的过程。在信号处理的过程中要产生大量的数字信息,为使研究人员摆脱或减轻分析或理解计算过程中产生的浩如烟海的数值结果的负担,出路只有借助于计算机的图形处理能力,实现计算可视化,用直观的图形或图象代替数字输出。我们知道图形或图象是帮助人们思维和判断的重要工具,人脑接收到的大量信息是通过视觉来完成的。目前的计算机在模糊决策、直觉思维等方面无法替代人脑,另一方面人脑在计算能力方面又远不如计算机,因此通过可视化技术使人脑和电脑一起处理问题,促使眼脑的紧密结合,充分发挥人脑和电脑的各自优势。科学计算的可视化不仅是一种很好的数据处理方法,也是一种新的交互技术,使研究人员在科学计算进行之中实时了
8、解和控制计算的进程,随时修改参数和条件,通过图形或图象观察这些改变所引起的计算结果变化。数字信号处理涉及到较多的数学理论和复杂的计算,如果把信号及其处理结果以静态或动态的图形或图象来表示,则显得十分直观,易于理解。信号处理中常用的几种图形包括信号的波形曲线、直方图、散点图、X-Y 绘图、饼图、极坐标图形、三维图形、等高线图、图象以及动态波形等。2.1.4 信号处理中的数值计算科学数值计算是计算机的一个重要的应用领域,在数据分析和信号处理中到处都涉及到复杂的数值计算,如矩阵相乘,矩阵求逆,矩阵特征值和特征向量计算,解线性方程组,插值和数据拟合,数值积分和微分等。作为信号处理软件开发工具的 DSP
9、 ActiveX 控件就3包含了丰富的数值计算方法以供开发人员直接调用,使得用户可以组合这些算法,避免复杂的编程,从而构造出新的信号处理算法。从另外一个角度来看,虽然 DSP ActiveX 控件是为了开发数字信号处理软件而研制的,但它的应用领域可远非信号处理,它可应用在涉及科学和工程计算、科学图形的任何软件开发之中,是一套十分有用的工具软件。数字信号处理(DSP)控件把信号及其处理结果的图形图象表示、信号测量、波形打印以及信号处理方法融为一体,形成了可重复使用的、功能强大的信号处理软件开发部件。它与信号采集一起使用,利用 VISUAL BASIC 5.0 和 VISUAL C+ 5.0 等可
10、开发出WINDOWS95/NT 下 32 位应用程序。有了 DSP 控件,就可以使开发人员避免低水平的重复劳动,绕开复杂的信号处理算法编程,把精力集中在需要解决的问题上,大大地节省开发时间和经费。所以 DSP 控件有利于推广、加快和加深数字信号处理技术在各领域中的应用,并使信号处理技术朝着更深、更新的方向发展。2.1.5 信号处理控件DSP 控件是信号处理图形表示和信号处理方法的有机结合体。在该控件中包含有信号处理常用的图形,如信号静态波形浏览、信号的动态波形浏览、X-Y 绘图,矩阵三维图形和图象表示等,形象生动的表现信号及其处理结果;另外 DSP 控件还包括许多信号处理算法,如 FIR、II
11、R 滤波器设计,FFT 、DCT 等正交变换,小波变换,自适应滤波,AR 模型参数估计,功率谱估计,数据拟合、直线回归和多元线性回归,平滑、插值、微分、积分,统计参数计算,随机数产生,线性方程组求解,实系数代数方程求根,矩阵运算等等。组合这些算法可构成复杂的信号处理软件。DSP 控件提供了信号处理方法应用的良好解决方案。信号处理应用往往涉及到数学、数值计算、信号处理理论和算法编程、计算机图形图象学等领域,由于信号处理的应用涉及到各学科领域,如果应用人员从头开始,势必要花很大的精力和时间去学习信号处理的理论和方法,重复低水平的劳动。DSP 控件为应用人员提供了良好的解决方案,用户只需了解一些基本
12、概念,无需研制和编制 DSP 的许多算法程序,就可直接应用 DSP 控件来解决许多应用问题。另外 DSP 控件可以与其他控件相结合,如图形控件(OLECHART) 、图象控件(LEADTOOLS)、网格控件(DBGRID)等,设计出专业化程度高、实用性强、功能强大、界面精美的应用软件,是实现信号处理视觉化的良好工具。数字信号处理(DSP)ActiveX 控件由信号图形图象表示和信号处理方法两大部分组成。信号图形表示包括四种图形界面模式:即时间序列静态波形浏览模式(模式 0) ,时间序列动态波形浏览模式(模式 1) ,X-Y 图形绘制模式(模式 2) ,数值矩阵图形和图象表示方法,这四种模式用于
13、信号及其处理结果的表示。DSP 控件还内置丰富的数字信号处理通用方法,如数字滤波器设计、递推滤波、信号平滑、信号微分和积分、信号变换、频谱估计、数据拟合、信号插值、AR 模型参数估计、小波变换、矩阵运算、线性回归等,并内置滤波器设计和功率谱估计对话框。DSP 控件具备中英文两种语言模式,为用户提供初始或运行时设置。应用该控件可以使用 Visual Basic 5.0 和 Visual C/C+ 5.0 等工具开发出WINDOW95/NT 下个人计算上功能强大的数字信号处理应用软件。DSP 控件的主要功能可概括如下:4(1)信号静态波形浏览信号静态波形浏览可用于直观地以波形形式显示所采集的数字信
14、号,并对其进行测量和打印等各种操作,在计算机屏幕上可显示多通道数字信号波形,对波形进行翻页显示,设置每屏显示的数据点数,对波形进行宽度和高度测量、点测量,波形打印,实现数据文件打开、保存,设置波形的曲线颜色、背景颜色、坐标网格颜色,控制波形重叠或分开显示,选择一段波形,控制坐标网格、工具条、状态条、标题栏的显示或隐藏等。(2)信号动态波形浏览信号动态波形浏览可用于信号实时动态波形监视和回顾,并可与自适应信号处理方法相结合,实现自适应信号处理和监视任务。可选择滚动或刷新两种波形更新方式,多通道波形可重叠或分开显示,可设置背景颜色、波形颜色,可给特定时间点加标记,改变波形滚动或刷新的方向等。(3)
15、X-Y 绘图X-Y 绘图可用于绘制多组(x i,yi),i=0,1,2,.,N-1 数据样本的图形,其中每个图形的样点数、线型、线宽、颜色都可以不相同,并可对图形上的任意一点进行测量,可选择批处理或逐点显示两种方式,可对显示区域增加或消去网格等。(4)数值矩阵的图形和图象表示数值矩阵的图形和图象表示包括三维线阵图、三维网格图、三维网格连续变化颜色填充图、三维无网格连续变化颜色填充图、等高线图、单矩阵连续变化颜色图象、三矩阵连续变化颜色图象等。可利用这些数值矩阵的图形表示来显示信号的时频分布,物体表面的温度、湿度、厚度等的分布,水域的深度分布,地面的高度分布等。(5)随机信号仿真可产生正态分布、
16、均匀分布、三角分布、指数分布随机数。(6)统计参数计算可计算数据的均值、方差、过零率、众数、中值、最大值、最小值等统计参数。(7)FIR、IIR 滤波器设计与滤波低通、高通、带通、带阻 FIR 和 IIR 滤波器设计、信号通过线性系统。(8)自适应滤波最小均方误差(LMS)算法自适应递推滤波;递推最小二乘(RLS)算法自适应递推滤波。(9)信号变换一维、二维快速付利叶变换;一维、二维小波变换;快速沃尔什变换;快速余弦变换。(10)经典和 AR 谱估计加窗周期图频谱估计;Burg 算法 AR 谱估计;最小二乘 AR 谱估计;沃尔瓦克 AR 谱估计;线性系统相频、幅频响应计算。(11)相关和卷积计
17、算自相关函数计算;互相关函数计算;卷积计算。(12)拟合与插值最小二乘曲线拟合;切比雪夫曲线拟合;一元等距和不等距插值;二元等距和不等距插值;数据平滑、微分与积分;311 点数据平滑;Savitzky-Golay 平滑;一阶、二阶微分;数值积分。5(13)矩阵运算矩阵转置;矩阵求逆;矩阵的行列式之值;矩阵相乘;实对称矩阵特征值与特征向量求解。(14)统计检验检验两组数据的均值、方差和概率分布是否相同。(15)解方程等线性方程求解;实系数代数方程求根;信号归一化为均值为零、方差为 1 的信号等。2.1.6 控件相关文件信号处理控件包括两个文件,它们分别是 DatView45.ocx,DatVie
18、w45.dll,使用时需要把这两个文件复制到 Windows 安装目录的 System32 子目录里,或者复制到应用程序目录里,并且用 regsvr32.exe 程序对 DatView45.ocx 进行注册,regsvr32.exe 在 Windows 安装目录的 System32 子目录里,注册方法是:选择 Windows 开始菜单的“运行”子菜单,出现输入命令对话框,如果 DatView45.ocx 保存在 c: windows system32 目录里,则在对话框中输入:regsvr32 c: windows system32 DatView45.ocx,回车后即可完成对信号处理控件的注
19、册。2.2 信号的图形表示2.2.1 信号波形浏览如图 2-1 所示给出了时间序列静态波形浏览界面,它由图形区、工具栏、状态栏和标题栏组成,在该模式下可完成对数据波形的测量、翻页、打印、选择、以及显示设置等功能,是多通道等间隔采样数据的一种表示方式。图 2-1 中左边一栏为工具栏,可用其中的按钮来控制波形的各种属性;上边一栏为标题栏;中间为波形显示区域;最下面一栏为状态栏;水平滚动条用于控制波形的显示起点;垂直滚动条用于控制波形的幅度偏移。在图形区域显示出来的波形是信号数据文件中的一段样本,这段样本由起点和长度来定义,可通过翻页或用滚动条等来改变显示信号的起点,信号显示的长度也可以改变,如设置
20、每厘米的秒数等。利用鼠标可以直接面对波形进行点测量、X 和 Y 轴跨度测量,并选择一段信号以供处理。对于多通道信号,可在 Y 轴方向上分开区域显示,也可以多通道重叠在一起显示。直接支持 ACQ、MDT 、WAV 格式的数据文件的读写。6图 2.1 时间序列静态波形浏览界面(1)工具栏说明可用 ToolBar 属性来控制此栏是否显示,现将各按钮的功能说明如下:打开数据文件。显示波形及数据的有关信息。将数据存储到磁盘文件。打印波形曲线。移到下一页数据波形。移到上一页数据波形。移到数据的尾部。移到数据的起点。增加坐标网格或取消坐标网格。使波形重叠或分开。自动重新抽样数据后显示。改变信号波形的颜色。设
21、置 X 轴每坐标格的的秒数。设置 Y 轴每坐标格的的幅度值。选择一段信号。测量波形上任一点的坐标值。以卡尺方式测量 X 轴方向的跨度。以卡尺方式测量 Y 轴方向的跨度。将波形的数据起点移到指定的位置,单位是数据点数。显示或隐蔽状态条。(2)状态栏说明图 2.2 状态栏编号1 信号的通道数目。2 当前所选择的通道。73 信号每通道的数据点数。4 当前的显示波形数据起点。5 显示数据的长度(点数) 。6 选择数据的起点。7 选择数据的长度(点数) 。8 X 轴每坐标格的时间秒数。9 Y 轴每坐标格的幅度值。(3)图形区域的操作在图形区域利用鼠标可完成波形点测量、X 轴波形段卡尺测量、Y 轴波形幅度
22、卡尺测量、选择波形段、选择通道号、弹出菜单的功能。A、点测量。在波形点测量状态将鼠标光标移到波形上的一点,按下鼠标左键,在鼠标光标附近出现一信息条显示出该点的(x,y)测量结果,松开鼠标左键后信息条消失。B、X 轴卡尺测量。在 X 轴卡尺测量状态将鼠标光标移到测量起点,按下鼠标左键水平拖拉至终点,鼠标光标附近出现信息条动态显示测量结果,松开鼠标左键后信息条消失。C、Y 轴卡尺测量。在 Y 轴卡尺测量状态将鼠标光标移到测量起点,按下鼠标左键垂直拖拉至终点,鼠标光标附近出现信息条动态显示测量结果,松开鼠标左键后信息条消失。D、选择通道号在图形显示区域中将鼠标光标移到相应通道的波形上,按下鼠标左键,
23、就完成通道选择,如状态栏已经显示,则其中相应的位置显示该通道号。E、选择信号波形段在信号选择状态,将鼠标光标移到选择起点,按下鼠标左键水平拖拉至终点,松开按钮则完成波形信号的选择,其选择结果在状态栏中相应的位置显示。F、弹出菜单在图形区域单击鼠标右键后弹出菜单,其中大部分功能与工具栏相同。Open(打开) 打开数据文件。Save(存储) 存储数据到磁盘文件。Information(数据信息) 显示数据信息。Print(打印) 打印所显示的波形。Next Page(下一页) 下一页波形。Prev Page(上一页) 前一页波形。Goto Start(移到起点) 移到数据起点。Goto End(移
24、到终点) 移到数据终点。Grid(坐标网格) 增加或取消网格坐标。Overlap(曲线重叠) 使多通道波形重叠或分开。Auto Sampling(自动抽样) 自动抽样数据后来显示波形。Curve Color(曲线颜色) 该变曲线的颜色。8X-Scale(X 轴比例) 设置 X 轴上每坐标网的 X 轴跨度值。Y-Scale(Y 轴比例) 设置 Y 轴上每坐标网的 Y 轴跨度值。Select(选择波形) 取消或设置波形选择模式。Measure(测量一点) 设置或取消波形点测量模式。X-Callipers(X 轴卡尺测量) 设置或取消 X 轴方向的卡尺测量模式。Y-Callipers(Y 轴卡尺测量
25、) 设置或取消 Y 轴方向的卡尺测量模式。Tool Bar(显示/隐蔽工具条) 显示或隐藏工具条。Status Bar(显示或隐藏状态条) 显示或隐藏状态条。Title(显示或隐藏标题栏) 显示或隐藏标题栏。PowerSpectrum(功率谱估计) 对所选择的波形段进行功率谱估计。Select All(选择全部波形) 选择全部波形以供处理。Select Screen(选择当前屏波形) 选择当前一屏波形以供处理。(4)滚动条水平滚动条用于调整波形显示的起点;垂直滚动条用于改变波形的幅度偏移。2.2.2 信号动态波形显示动态波形浏览模式以滚动或刷新形式动态观察时间序列波形,滚动或刷新方向可以设置成
26、向左或向右,并可在某些特殊位置加上标记。可设置波形的颜色和背景颜色,多通道波形显示是重叠还是分开;与递推自适应信号处理方法结合,可对数据进行自适应处理并实时观察处理结果。该方式可应用于低频信号采集时的实时信号监视,也可用于对信号数据文件进行回顾,相当于随机信号低频数字存储示波器。例如应用于生物医学信号,如心电、脑电、脉搏波、呼吸波等的信号监视中。2.2.3 X-Y 绘图在 X-Y 绘图模式下,图形区域中可以绘制多个不同的图形,每个图形的形状由(x i,y i), I=0, 1, 2, 来给出。整个区域的值域由 GraVmin,GraVmax,GraXmin ,GraXmax 给出,每个图形的点
27、数、线型、线宽、颜色都可以不同。并且当鼠标在图形上一点上点取时,出现一个信息条其中显示出该点(X ,Y )的坐标测量的结果。可利用此窗口来表示信号处理的结果,如频谱曲线、信号分布等。在该模式下可选择批处理形式和逐点绘图形式,在批处理形式下,一次把所有要显示的数据设置好后,再将图形显示出来;在逐点形式下,一次处理一个点,可用于动态图形的显示。9图 2.3 X-Y 绘图模式界面例子2.2.4 矩阵的图形表示方法在信号处理中经常产生一些二维数值矩阵,如信号的二维分布,信号的时频谱特性,脑电信号处理中的脑电地形图,阵列信号的成象处理等,在二维物体表面上放置传感器可测量物体表面的温度、湿度、强度等参数,
28、这些数值如果采用图形或图象表示,则十分直观,易于理解。DSP 控件中提供这些数值矩阵的多种形式表示方法。如三维线阵图、三维网格图、三维网格连续变化颜色填充图、三维无网格连续变化颜色填充图、等高线图、单矩阵连续变化颜色图象、三矩阵连续变化颜色图象等。用这些表示方法可使得原本复杂抽象的大量数值变得十分直观、易于理解、一目了然。对于单矩阵表示,颜色变化分为 256级;对于三矩阵的联合图象表示,采用 RGB 真彩色表示,每个矩阵占用一个颜色分量,每个分量有 256 级颜色连续变化。如图 2-4 所示是矩阵图形表示的一个例子。图 2.4 数值矩阵的图形图象表示例子2.2.5 功率谱估计和滤波器设计对话框
29、信号处理控件中内置两个信号处理对话框,它们分别是功率谱估计对话框和滤波器设计对话框。10(1)功率谱估计对话框使用功率谱估计对话框(如图 2-5 所示)可对所选择的信号进行功率谱估计、频谱测量、频域特征参数计算等,并可由用户选择功率谱估计的方法、窗函数、是否对数显示以及是否加坐标网格等。谱估计算法在对话框中我们可选择以下五种功率谱估计算法:周期图法平滑周期图法极大熵柏格方法优尔瓦克 AR 方法递推最小二乘方法窗函数在使用周期图和平滑周期图方法估计功率谱时,可选择如下窗函数:矩形窗(Rectangle)、泊松窗(Parzen) 、汉明窗(Hanning)、沃尔什窗(Welch)、海明窗(Hamm
30、ing)、布克来蒙窗(ExactBlackman)。在使用 AR 模型做功率谱估计时,该选项变成了 AR 模型的阶数选择。坐标网格在功率谱曲线显示的图形区域,可显示不同的坐标网格,它们是线性无网格、线性密网格、线性稀网格、对数无网格、对数密网格、对数稀网格。图 2.5 功率谱估计对话框重新计算功率谱在选择完谱估计方法,窗函数或 AR 模型的阶数后,需要单击计算按钮重新计算功率谱并显示相应的曲线。均值频率、中值频率和峰值频率在左边参数设置栏中显示三个频域特征【参数】均值频率、中值频率和峰值频率。动态菜单在图形区域单击鼠标右键出现如下动态菜单:存盘;打印;计算;参数栏;退出。存盘: 将该频谱曲线存
31、成 XYP 格式的数据文件。打印: 将该曲线打印到纸上。计算: 同参数设置栏中计算按钮的功能,即在改变了估计方法、窗函数或 AR 的阶数后,重新估计功率谱曲线。11参数栏:关闭或显示左边的参数设置栏。退出: 退出该对话框。测量按下鼠标左键可对光标的坐标值进行测量,此时出现的动态信息条中显示测量值(X,Y,R) ,X 之值代表此点 X 轴上的测量值(单位 HZ) ,Y 之值代表此点 Y 轴上的测量值,R 值是频段能量百分比,当按住鼠标左键沿水平方向移动时,X 和 R 之值随之变化,其中 R 之值代表该频段能量与总能量的百分比。(2)滤波器设计对话框滤波器设计对话框(如图 2-6 所示)可用于设计
32、任意通带的有限冲激响应(FIR)和无限冲激响应(IIR)滤波器,用户可选择各种滤波参数,并可用此滤器对所选择的信号进行滤波。2.6 滤波器设计对话框设计方法可选择有限冲激响应滤波器(FIR)和无限冲激响应滤波器(IIR)两种。频率下限(HZ)滤波器的下限频率,该值不能超过采样频率的一半,在低通和高通滤波器设计时此值无用。频率上限(HZ)滤波器的上限频率,该值不能超过采样频率的一半。在低通和高通滤波器设计时以此值为准。滤波器阶次设置滤波器的阶次,在有限冲激响应滤波器设计和无限冲激响应低通和高通滤波器设计时,阶数为奇数;在无限冲激响应带通和带阻滤波器设计时,阶数为 4 的倍数加 1。设计滤波器在设
33、置好设计方法、上下限频率、阶次、滤波器类型后,单击设计按钮设计出相应的滤波器,并显示出理想和实际滤波器的幅频响应曲线。相频/幅频响应曲线显示 (如图 2-7 所示)单击相/幅频按钮可切换显示幅频和相频响应曲线。12应用到信号单击应用按钮可用此滤波器对所选择的信号进行滤波,同时返回。退出单击取消按钮返回并不对信号进行滤波。测量在波形显示的图形区域按下鼠标,弹出信息条显示鼠标光标处的测量值。图 2.6 滤波器设计相频特性对话框2.3 数据文件信号处理控件在模式 0 方式下支持四种数据文件格式,即MDT1.0,MDT2.0,ACQ,WAV 格式,在模式 2 方式下支持 XYP 格式。其中 WAV 格
34、式是 WINDOWS 的语音文件格式,MDT2.0, MDT1.0, ACQ 格式用于存储等间隔采样的数字信号,XYP 格式用于 X-Y 图形数据。下面对它们分别说明,以便于用户读写这些格式。2.3.1 MDT1.0 格式MDT1.0 文件格式是二进制流式文件,头 30 个字节为文件头,接下来是存储的数据。文件头可描述如下:名称 起始位置 长度 Bytes 类型文件标志 0 8 字符串数据点类型 8 1 字符数据显示类型 9 1 字符通道数目 10 2 整型数据长度 12 4 长整型采样速率 16 4 浮点型变换因子 20 4 浮点型13变换偏移 24 4 浮点型数据点排列方式 28 1 字符
35、保留 29 1 字符在 C 语言中可定义以下文件头:typedef struct MDT10Tagchar id8;char type;char display;int nch;long len;float sampling;float a;float b;char arrange;char reserved;MDTHEADER;id-MDT1.0 文件的标志,恒为 mdat1.0type-标识文件中每一样点的数据类型。=c:有符号字符型=C:无符号字符型=i:有符号整型=I:无符号整型=f:浮点型=l:长整型=L:无符号长整型=d:双精度型display-字符型,数据显示方式。=空格:连续波
36、形曲线=a:直方图=b:三维网格图=c:三维线阵图=B:等高线=d:PCX 256 色图象=D:彩色成象图象=e:256 级灰度图象nch-通道数目或图象高度。len-采样点数或图象宽度。14sampling-采样速度,单位为 Hz。a-变换因子。b-变换偏移。arrange-字符型,样点排列顺序。=空格,存放顺序为:第一个 len 点为第 1 通道数据;第二个 len 点为第 2 通道;第 nch个 len 点为第 nch 通道数据。=1, 第 1 个 nch 个点为第 1 个采样时刻,第 2 个 nch 个点为第 2 个采样时刻,依此类推。reserved-保留。2.3.2 MDT2.0
37、格式(1)文件头定义数据类型名称 偏移(字节) 长度(字节)说明char Identifier16 0 16 总是 mdata2.0short nChannels 16 2 信号路数long Length 18 4 每路信号的样点数Float Sampling_Rate 22 4 信号的采样速率Short Point_Type 26 2 每个样点的存储形式Short Signal_Type 28 2 信号类型标识Float Vmin 30 4 信号样值的最小幅度Float Vmax 34 4 信号样值的最大幅度Float A 38 4 变换因子float B 42 4 变换偏移Float Am
38、plifier 46 4nch 每路信号的放大倍数Char x_unit16 46+4nch 16 X 轴的单位Char y_unit16 62+4nch 16 Y 轴的单位Long Text_Length 78+4nch 4 说明文本长度(2)数据存储顺序存储信息 信息长度文件头 82+4nChannels长度为 Text_Length 的说明文本 Text_length第 1 采样时刻的 nChannels 路样点值 nChannels 每样点所占字节数第 2 采样时刻的 nChannels 路样点值 nChannels 每样点所占字节数* *15* * *第 Length 采样时刻的 N
39、 路样点值 nChannels 每样点所占字节数(3)有关约定与说明(A)每个样点的存储形式 Point_Type,用一个 16 位整数标识,遵循以下约定:0-有符号字符型,每点占 8 位1-无符号字符型,每点占 8 位2-有符号整型, 每点占 16 位3-无符号整型, 每点占 16 位4-有符号长整型,每点占 32 位5-无符号长整型,每点占 32 位6-浮点型, 每点占 32 位7-双精度型, 每点占 64 位(B)信号类型标识(Signal_Type)之约定用户可以定义信号类型编号,例如 0-未知信号类型,1-心电信号,2- 语音信号,3-振动信号等。(C)变换因子 A 和变换偏移 B
40、的作用对于按非浮点型和非双精度型存储的信号,如果要将存于磁盘中的值 x 转换成幅度范围在 Vmin-Vmax 之间的数值 y,需要经过 y=Ax+B 的变换,此时 y 值用 y_unit 所给定的单位度量。对信号放大之前的幅度 in 可由放大因子来算出 in=y/fa,对于每通道均有一个放大因子。在此数据存储格式中,还可以存储一段文字说明,以说明该数据的采集的测试条件环境,被测对象的资料等有关信息。2.3.3 ACQ 格式(1)文件头数据类型 名称 长度(字节) 偏移(字节) 说明Char Identifier8 8 0 固定为 acq1.0Int Nchannels 2 8 路数Long L
41、ength 4 10 采样时间点数Float Fs 4 14 数据采样速率Float Amp 4 18 放大器增益Float Vmax 4 22 A/D 卡输入幅度最大值16Float Vmin 4 26 A/D 卡输入幅度最小值Char Reserved2 2 30 保留值,此处设 0, 0(2)数据存储顺序从偏移为 32 开始存放数据,每路数据采用浮点数存储,占用 4 个字节。数据存放顺序为:ch0,ch1,.,chn-1 ch0,ch1,.,chn-1 . . . . . . ch0,ch1,.,chn-1 ch0,ch1,.,chn-1-t=0- -t=1- -t=N-2- -t=N-
42、1-pos=32 pos=32+n*4 pos=32+n*4*(N-2) pos=32+n*4*(N-1)2.3.4 语音文件 WAV 格式在 C 语言中,可以定义如下数据结构作为 WAV 文件头。struct WINWAVTagchar riff_id4; / 恒为:RIFFlong size0; / datasize+40char wave_fmt8; / =WAVEfmt,最后一个字符为空格long size1; / 恒为 16short fmttag; / =1, PCM encodingshort channel; / 1=单声道; 2=立体声long samplespersec;
43、/ 采样率long bytepersec; / =samplespersec*blockalignshort blockalign; / =channel*(bitpersamples/8)short bitpersamples; / =8bit,16bitschar iddata4; / 恒为 datalong datasize; / len=datasize/blockalignriff_id4:总是为 RIFF,可作为识别符。size0: 是样本数据大小加上 40。wave_fmt8:恒为 WAVEfmt,最后一个字符为空格。size1:恒为 16。fmttag:此值等于 1,代表 PC
44、M 编码。channel:通道个数,等于 1 或者 2。samplespersec:采样速率。bytepersec:每秒钟的字节数,=samplespersec*blocalign。blockalign:一个时刻所采集的样点字节数。=channel*(bitpersamples/8) 。bitpersamples:每个样点的比特数。=8 或多或 1617iddata4:恒为 datadatasize:样本数据的字节数,每通道的数据点数为 NPOINTS=datasize/blockalign,datasize 通常用 Size0-40 得到。文件中数据存储顺序是一个样点接一个样点存储的,数据块
45、的的大小是 datasize 个字节,当幅度分辨率为 8 位时,幅度值的范围为 0-255;当幅度分辨率为 16 位时,幅度值的范围为-32767-32767。2.3.5 XYP 格式(1)文件头类型 名称 长度(字节) 说明Char Identifier8 8 文件识别标志,恒为 xyp2.1Short Ncurves 2 图形个数,最多为 16Float Xmin 4 X 轴上的坐标最小值Float Xmax 4 X 轴上的坐标最大值Float Ymin 4 Y 轴上的坐标最小值Float Ymax 4 Y 轴上的坐标最大值Long NpointsNcurves 4*Ncurves 各图形
46、的数据点数Long ColorsNcurves 4*Ncurves 各图形的颜色Short LineWidthNcurves 2*Ncurves 各图形的线宽度Short LineStyleNcurves 2*Ncurves 各图形的线类型由上可知,XYP 文件的头大小为:26+12*Ncurves 字节,其中 Ncurves 是图形的个数。(2)数据排列顺序接着文件头下面存储的是数据,数据类型为浮点数,数据块的大小(字节数)为:Npoints(0)+Npoints(1)+ +Npoints(Ncurves-1)*4*2其存储顺序为:数据 长度字节第 0 个图形的 X 轴样值 Npoints(
47、0)*4第 1 个图形的 X 轴样值 Npoints(1)*4* * * *第 Ncurves-1 个图形的 X 轴样值 Npoints(Ncurves-1)*4第 0 个图形的 Y 轴样值 Npoints(0)*4第 1 个图形的 Y 轴样值 Npoints(1)*4* *18* * *第 Ncurves-1 个图形的 Y 轴样值 Npoints(Ncurves-1)*42.4 常用信号处理算法描述2.4.1 基本统计算法统计分析是数学的分枝,也是计算机应用的一个很重要的方面。在信息爆炸的今天,充分利用计算机高速、准确处理数据的能力来进行统计分析具有广泛的应用和十分重要的意义。实际上统计方法
48、在随机信号分析中也占有重要的地位。在这一章里我们主要描述一些常用的统计算法,它们包括: 最大值和最小值 均值、方差、中值、众数、偏度和峰度 过零率和峰值率 自相关、互相关和卷积 直方图统计 直线拟合 给定分布的随机变量产生 信号通过线性系统统计方法在随机信号分析中有着广泛的应用,例如考察一个随机信号是否高斯过程,可由该信号的一维幅度直方图和二维幅度直方图来初步确定。另外如果信号是高斯过程,则它的均值、中值和众数应当十分接近,偏度也应接近于零。当然这些方法不是严格的检验方法,但至少可以做到拒绝接收信号为高斯过程的假设。如果信号可看成是高斯过程,则很多有用的信号处理方法就可以得到应用,如信号如果是高斯过程,则该信号可以认为是高斯白噪声通过一个线性系统而产生的。实际上随机信号的数字统计特征参数也可以作为代表信号特性的特征参数,用它们来对信号进行分类和识别等。随机信号统计分析的目的在于用大量的样本去估计随机信号中的不变量,当然这个不变量应当是随机信号的特征。一 均值、方差、中值、众数、过零率、峰值率等已知时间序列 x(i), i=0, 1, 2, , N-1, 计算它的最小值 min、最大值 max、均值 m、方差 var、标准差 std、中值 mv、众数 mode、偏度 pd、峰度 fd、过零率 zr、峰值率 pr。1. 最大值与最小