历史上的今天
今天是:2024年11月06日(星期三)
2019年11月06日 | 一种基于混合编程的小波去噪方法
2019-11-06 来源:eepw
0 引言
信号降噪是信号处理领域的经典问题之一。传统的降噪方法主要包括线性滤波方法和非线性滤波方法,滤波器在工作时对信号进行筛选,只让特定频段的信号通过。当信号中的有用成分和噪声成分各占不同频带,可以将噪声成分有效除去。但如果信号和噪声的频谱重叠,则经典滤波器将不起作用。这些滤波器按滤波的频段可分为高通、低通及带通滤波器,根据设计滤波器的思想可以把滤波器分为巴特沃斯滤波器、贝塞尔滤波器、椭圆滤波器及切比雪夫滤波器等。
此外,传统的滤波器降噪方法的不足在于使信号变换后熵增加,无法刻画信号的非平稳性并且无法得到信号的相关性。为了克服上述缺点,采用小波变换来解决信号降噪的方法应用越来越广泛。但是,由于小波变换数学理论较深,对于初学者而言,使用传统的C语言等编程方法,编程难度很大。本文采用LabVIEW 和Matlab 混合编程的方法,将LabVIEW 完美的图形编程技术和Matlab强大的数学解算功能结合起来,实现了小波降噪的数学建模和信号图像显示。
1 小波变换原理
小波变换的理论主要包括连续小波变换、离散小波变换和多分辨分析。
1.1 连续小波变换
按如下方式平移和伸缩而生成的函数族 {ψ a,b } 叫分析小波或连续小波(Continue Wavelet Transform,CWT),ψ 称为基本小波。

任意函数在某一尺度a 、平移点b 上的小波变换系数,实质上表征的是在b 位置处,时间段2aΔψ 上包含在中心频率为ω* a ,带宽为2Δψ - /a 频窗内的频率分量大小,随着尺度a 的变化,对应窗口中心频率为ω* a 及窗口宽度2Δψ - /a 也发生变化。
1.2 离散小波变换
在实际应用中,一般分析的信号都是经过离散采样后得到的离散时间序列,需要把连续小波及其变换离散化,以进行数字信号处理。具体作法是通过对其伸缩尺度因子a 和平移因子b 的采样而离散化。

式中:m,n 分别称为频率范围指数和时间步长变化指数。
在连续小波变换Wψ f (a,b) 中,由于a,b 是连续变化的,它是高冗余的,只要母小波ψ(t) 满足容许条件,则可由Wψ f (a,b) 完全恢复原信号f (t) .对于离散小波变换,由于对a,b 进行了离散采样,为了使Wψ f (m,n) 包含足够的信息以恢复原信号f (t) ,就需要对变换使用的母小波作出更严格的限制。
在Hilbert空间H中的一族函数{- }jj ∈ J称为是一个框架,如果存在A,B ∈(0,∞) 时,对于所有f ∈ H,有:

2 小波降噪原理
小波变换具有低熵性、多分辨率特性、去相关性、选基灵活性的特点,因此小波降噪得到更广泛的应用。其中阈值去噪方法是一种实现简单、结果较好的小波降噪方法。
阈值去噪方法就是对小波分解后的各层系数中模大于和小于某阈值的系数分别处理,然后对处理完的小波系数进行反变换,重构经去噪的信号。在现实情况下,有用的信号通常是低频信号,而噪声信号通常是高频信号,在去噪的过程中,通常对小波分解的高频系数进行阈值化后重构信号。阈值的获取是小波去噪的关键,本文中的小波去噪模块借助于Matlab小波分析工具箱中的小波分析函数获取阈值。
Matlab 中实现信号阈值获取的函数有ddencmp、thselect、wbmpen 和wdcbm,本文采用了wbmpen.小波去噪的部分Matlab代码如下:

3 LabVIEW 和Matlab 混合编程方法
3.1 LabVIEW简介
LabVIEW(Laboratory Virtual Instrument Engineer-ing)是NI(National Instruments)公司的产品,是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。这是一个功能强大且灵活的软件,利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。利用LabVIEW,可产生独立运行的可执行文件。
图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW 是一个面向最终用户的工具,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
3.2 LabVIEW调用外部代码的方法
LabVIEW 的Functions 模块内Advanced 中CIN 节点,用户可将需要调用的外部代码编译成LabVIEW 所能识别的格式与此节点相连,当此节点执行时,Lab-VIEW 将自动调用与此节点相连的外部代码,并向CIN传递特定的数据结构。
使用CIN技术,用户可向CIN传递任意复合的数据结构。由于LabVIEW 中数据的存储格式遵循了C语言中数据的存储格式,所以通常情况下,使用CIN 可获得较高的程序效率。
3.3 利用LabVIEW的图形界面编程方法
为了更直观地显示信号波形,采用LabVIEW 开发了图形显示界面,用以显示原始信号波形和消噪后信号波形。图1是图形显示界面的LabVIEW编程代码。图2是采用LabVIEW和Matlab混合编程的代码。

4 应用实例
本文采用小波去噪方法对两种不同的振动冲击信号进行了分析处理,如图3和图4所示。


从图形显示结果可以看出,经小波降噪后,滤除了噪声干扰信号,各激励响应信号更加明显,这对于后期的信号分析处理奠定了良好基础。
5 结语
小波去噪方法相比于传统的滤波器方法,在处理非平稳信号时具有独特的优势,有助于提高信号分析处理精度。而采用LabVIEW 和Matlab 混合编程的方法,则降低了编程难度,可以大大提高工作效率,是一种实现仪器编程的便捷途径。
史海拾趣
|
目 录 第一章 MINI2440 开发板介绍.........................................................................................................................- 11 - 1.1 MINI2440 开发板简介........................................... ...… 查看全部问答> |
|
各位大侠: 小弟定制WinCE6.0 平台,导出并安装SDK, 用VS2005创建一个智能设备的MFC设备应用程序,最简单的那种,基于对话框, 不做任何修改,直接编译,报错.... 错误信息如下,跟官方技术支持联系过,无果,望各位大侠路过留香 ...… 查看全部问答> |
|
做了一个LPC2368 xmodem的bootloader程序,设计思路是LPC2368的片内FLASH里面存放2个独立的工程,开机上电后运行第一个程序,存放于0-3扇区,也就是我自己编写的bootloader;第一个工程运行完,运行第二个程序,代码存于4-27扇区,这部分为应用程序 ...… 查看全部问答> |
|
/* 串行驱动方式,唯一要注意的一点就是WR和RD这两个引脚虽然用不到,但是要接地,否则无法正常显示; /**************************预处理*************************/ #include <reg52.h> #include <intrins.h> //============ ...… 查看全部问答> |
|
STM8写了保护后,怎样用STVisualProgrammer重新烧录程序 STM8 写了保护后,怎样用ST Visual Programmer重新烧录程序,请各位大虾指点下,不甚感激!… 查看全部问答> |
|
问个小白的问题,MSP430F2013和CC1101EMK433 最近在做一个项目,想用MSP430F2013通过SPI和CC1101EMK433模块通信,可是2013的FLASH只有2KB,RAM只有128B。。就向问一下各位大牛,MSP430F2013够用么?谢谢! [ 本帖最后由 sphinz 于 2011-9-24 16:53 编辑 ]… 查看全部问答> |
|
简介:TMS320C64x+网络课程6——CSL3.x,主要介绍CSL3的使用情况,CSL2-CSL3-PSP的逐步升级,CSL的层次,外设寄存器的结构和操作等详细讲解。 此网络培训针对C64x+,每次一个专题,由DSP高性能部门技术支持工程师为您全程指导,敬请期待。 $(\'s ...… 查看全部问答> |
|
我是做STM8升级,出现了这个假象,具体STM8升级的思路是:8000到a000地址做第一个bootload工程,用这个工程来升级a000后的第二个工程。我用STVP把两个工程的s19文件合起来下载进芯片里是可以正常跑的。然后用STM8的SPI接受另一个芯片发过来的第二个 ...… 查看全部问答> |




