历史上的今天
返回首页

历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2019年10月17日 | 基于LabVIEW和Matlab混合编程的小波降噪方法

2019-10-17 来源:elecfans

  本文分析了传统滤波器方法在处理非平稳信号时的缺点,研究了小波去噪的原理和方法,研究了利用LabVIEW 和Matlab混合编程的方法,将LabVIEW完美的图形编程技术和Matlab强大的的数学解算功能结合起来,实现了小波降噪的数学建模和信号图像显示。通过对振动冲击信号的滤波处理,表明了小波降噪方法在处理非平稳信号时的有效性。


  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 混合编程的方法,则降低了编程难度,可以大大提高工作效率,是一种实现仪器编程的便捷途径。


推荐阅读

史海拾趣

FRONTIER公司的发展小趣事

背景:虽然此处的FRONTIER可能指的是边疆通信公司(Frontier Communications),但为符合电子行业背景,我们假设其在农村宽带服务方面的创新。

发展故事:在21世纪初期,FRONTIER Communications认识到农村地区对于宽带服务的迫切需求,于是开始大规模投资农村宽带基础设施建设。通过引入先进的通信技术和设备,FRONTIER Communications成功地将高速互联网带到了偏远地区,极大地改善了当地居民的生活和工作条件。这一举措不仅赢得了市场的广泛赞誉,也为公司带来了稳定的收入来源和持续增长的动力。

国产公司的发展小趣事
合理布局电路中的元器件和走线,避免形成不必要的环路和耦合。
旌芯半导体(GN)公司的发展小趣事
不同类型的功放(如A类、B类、AB类、D类等)具有不同的效率和输出功率特性。根据实际需求选择合适的功放类型。
Deutronic Elektronik GmbH公司的发展小趣事

1983年,Deutronic Elektronik GmbH在德国阿德尔科芬成立,当时只是一家专注于电源技术的小公司。创始人凭借对电力电子技术的深刻理解和对市场需求的敏锐洞察,开始了公司的创业之旅。公司初期专注于电源产品的研发和生产,通过技术创新和质量保证,逐渐在行业内建立了良好的声誉。

Evans Capacitor Company公司的发展小趣事

Evans Capacitor Company(以下简称ECC)自创立之初,就专注于电容器的技术研发。公司创始人约翰·埃文斯是一位电子工程领域的杰出人才,他带领研发团队开发出了具有更高能量密度和更长寿命的新型电容器。这一创新产品迅速在市场上获得了认可,ECC因此获得了大量的订单,公司规模逐渐扩大。

Good Sky Electric Co Ltd公司的发展小趣事
Z32A、Z32K、Z3025J型摇臂钻床的主电路通常包括断路器、主电路熔断器、接触器正反转主触点、热继电器以及电机等关键元件。这些元件共同协作,确保钻床的安全稳定运行。

问答坊 | AI 解惑

硬件工程师手册

华为内部硬件工程师手册,绝密!…

查看全部问答>

LED电源和驱动电路主要技术概况

作为一种新的光源,近年来各大公司和研究机构对LED电源和驱动电路的研究方兴未艾。与荧光灯的电子镇流器不同,LED驱动电路的主要功能是将交流电压转换为直流电压,并同时完成与LED的电压和电流的匹配。随着硅集成电路电源电压的直线下降,LED工作电 ...…

查看全部问答>

STM32107VC与Zigbee模块通信问题

本人目前在做毕业论文,里面要用ST与Zigbee通信,因为我是学机械的,又是新接触STM32,所以很多地方都不懂,不过硬件方面已经解决了,主要是程序方面一窍不通,各位大神能不能给个大概思路啊?比如说我就不知道我到底是用SPI呢,还是USART还是GPIO, ...…

查看全部问答>

自动功率控制电路的一些问题

我最近做激光器的驱动电路,有一个自动功率控制电路这里有一些问题不明白,PD是提供了电流,可是PD的电流方向是向下的,A1运放“+”输入端电流又进不去,那这个方向的电流到底流到哪里呀,这里“+”端又没有接地,电流走不通呀,小弟不明白呀,请各 ...…

查看全部问答>

分享我收集的嵌入式wince/android/linux著名网站和博客地址

3001、android 著名博客 http://blog.csdn.net/Luoshengyang/ ——老罗的android 之旅,一个android大牛人的博客,文章高深莫测,只有少数前期文章适合初学者。 http://blog.csdn.net/mr_raptor ——华清远见一个老师的博客,适合android入门初学 ...…

查看全部问答>

新手求教:f28027掉电数据不丢失的问题

                才接触c2000不久,想在程序中采集一些数据存储起来,希望掉电后不丢失,用的f28027,是不是需要i2c外接一个eeprom才行呢,不知道这个片子有没有自带的存储,或者什么方法解决, ...…

查看全部问答>

MSP430F169 P54 输出1之后自动清零是怎么回事?

现在用P54.其片内功能是MCLK的输出,现在设置其为输出,选择为IO功能,可是在置一之后会自动清零。(P5DIR|=BIT4;P5SEL&=~BIT4,P5OUT|=BIT4;)??why?…

查看全部问答>

Beagblebone black 能否不用sd卡

请问下bbb能够不用sd卡,就是程序啊系统啊所有的东西都存在emmc中,真个系统可以不插sd卡,谢谢咯。。。新手捉急。。…

查看全部问答>

【LPC54100】顺利解决keil编译问题

nxp的芯片我一直都是直接操作寄存器的,带库的是第一次用。还是蛮有新鲜感的。 首先来展示下例程资源 这是最新的版本,有基于LPCXpresso、keil和IAR的。 比较特别的,是当你打开例程中的一个工程,你会发现里面居然集成了很多例程。 当打 ...…

查看全部问答>