c语言 包络算法,包络检测C程序

最近做项目要提取一个声音信号的包络波形,所以花了点时间研究各种包络提取的算法。

所谓包络检测又叫幅度解调,在许多领域都有重要的应用。如果载波信号是确定的,那么通常可以采用同步解调的方式,这种方式的信噪比最好,对信号中混入的噪声的抑制能力最强。所谓同步解调是通讯领域通常的叫法。在信号检测领域,这种方式通常称为“相敏检波”,锁相放大器(Lock-in Amplifier)采用的就是这种方式最典型的例子。

如果载波比较乱,就像我现在的应用场景,要提取噪声的幅度随时间变化的规律,那么包络检波法会更适宜。我这里的代码就是采用的包络检波法。

包络检波法的基本原理可以看下面这个电路图,这个是最基本的半波包络检波。

08c2d98e16b318ed243e7837d419e855.png

把这个过程用程序来实现就有了下面的代码。

/**

* 包络检波,模拟了硬件半波检波的过程

* rc = 0 时初始化

**/

double env_1(double x, double rct)

{

static double old_y = 0.0;

if(rct == 0.0)

{

old_y = 0.0;

}

else

{

if(x > old_y)

{

old_y = x;

}

else

{

old_y *= rct / ( rct + 1 );

}

}

return old_y;

}

void env_2(double x[], double y[], int N, double rct)

{

double xx = 0.0;

int i;

y[0] = fabs(x[0]);

for(i = 1; i < N; i++)

{

if( x[i] > y[i-1])

{

y[i] = x[i];

}

else

{

y[i] = y[i-1] * rct / ( rct + 1 );

}

}

}

上面是半波检测的代码,只要稍微增加几行,就能实现全波检测。

/**

* 包络检波,模拟了硬件全波检波的过程

* rc = 0 时初始化

**/

double env_3(double x, double rct)

{

static double old_y = 0.0;

if(rct == 0.0)

{

old_y = 0.0;

}

else

{

x = fabs(x);

if(x > old_y)

{

old_y = x;

}

else

{

old_y *= rct / ( rct + 1 );

}

}

return old_y;

}

void env_4(double x[], double y[], int N, double rct)

{

double xx = 0.0;

int i;

y[0] = fabs(x[0]);

for(i = 1; i < N; i++)

{

xx = fabs(x[i]);

if( xx > y[i-1])

{

y[i] = xx;

}

else

{

y[i] = y[i-1] * rct / ( rct + 1 );

}

}

}

这个代码中有个参数 rct,对应的是硬件电路中的RC时间常数,要根据待检测的包络信号的频带来确定。

下面是用这个代码实际提取包络的算例。可以看出这个代码的效果还是蛮不错的。(比采用Hilbert变换得到的结果还要好)

918de8078ce3bf6557f0c5ddfe51412b.png

1e39d501a0e0e10abf35162b6f169da9.png

原文:http://blog.csdn.net/liyuanbhu/article/details/38262751

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 2005 DTS导入平面数据

SQL Server 2005 DTS导入平面数据源时&#xff0c;总是被截断&#xff0c;无法执行的错误解决方案 1 典型的错误信息如下&#xff1a; 消息 * 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断&#xff0c;或者一个或多个…

usb转ttl_[开源]双TYPEC转TTL串口模块

在工作中经常会用到USB转TTL串口调试工具。网上买的用的不顺手&#xff0c;所以做了一个。最终效果:渲染图实物图学习目的做一个USB转串口模块&#xff0c;使用学习渲染软件keyshot使用到的工具:立创EDA&#xff0c;keyshot等电烙铁&#xff0c;万用表等1.需要实现的功能4.根据…

cocos2dx 字体外发光_在电致发光研发领域,选择有机材料是基于哪些原因?

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

WebOS + WebIM

此已文重新编辑.WebOSWebOS 是基于web技术实现的类似于桌面操作系统交互风格的应用程序。实现WebOS的主要技术可以是JavaScript或者是RIA(Flex\SL)。在JS领域内的最强大和最著名的可能要数eyeos了。本文所述的WebOS也是采用JavaScript开发的。图1&#xff1a;此应用主要是用于大…

雨滴桌面rainmeter素材_win10 桌面如何做到清爽好看?这篇教程给你答案

当一个电脑用的时间长了以后&#xff0c;难免就会变得非常杂乱。伟大的领袖曾经说过&#xff0c;要像倒腾自己的发型一样折腾好自己的桌面。道理咱都懂&#xff0c;可是大家动起手来就傻眼了&#xff0c;这啥玩意啊&#xff0c;算了吧&#xff0c;还是不弄了。本着慈悲为怀&…

学习委托

简单实例 1 publicclasstest2 {3 publicdeledate voidMenuHandler(stringusername);4 publicvoidMenuHandlershixian(stringusername)5 {6 response.write(username);7 }8 publicvoidshow()9 {10 MenuHandler mhMenuHandlershixian;11 mh("majuan");12 }13 publicsta…

ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...

很多朋友问到关于ups相关的计算&#xff0c;其实关于ups方面的计算还是挺多&#xff0c;ups无论是接空开&#xff0c;还是连接电缆&#xff0c;以及选择电池&#xff0c;都可能需要计算它的电流或功率等&#xff0c;那么今天我们来详细了解下ups的相关计算。一、ups空开及电缆的…

多层感知机和神经网络的区别_学习笔记-从神经元到神经网络

人的大脑神经网络的复杂程度有人说&#xff0c;只有银河系可以比拟。总所周知&#xff0c;神经网络就是模仿大脑神经网络用数学知识构造的模型。单个神经元还是比较简单的。神经元一个神经元有树突&#xff0c;轴突&#xff0c;和细胞体等部分。树突接受输入信息&#xff0c;细…

华为鸿蒙os电视测评,高端技术下放毫不吝啬!华为智慧屏SE系列评测:鸿蒙OS让入门大屏也好用...

一、前言&#xff1a;高起点的华为智慧屏 终究走向更多大众用户智慧屏从概念落地为产品之后&#xff0c;一直都是华为旗下终端产品当中一个相当重要的角色&#xff0c;特别是在手机业务受阻的当下&#xff0c;更是成了全场景智慧化战略的核心支撑之一。凭借高品质的影音娱乐、花…

app调html页面,app界面管理(风格色调).html

&#xfeff;APP界面管理(风格色调)$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/re…

2021河南高考成绩查询郸城一高,郸城一高在河南有多牛 2021年高考成绩

课程介绍课程内容郸城一高在河南有多牛呢&#xff0c;2019年高考成绩怎么样呢&#xff0c;下面小编为大家总结一下&#xff0c;仅供大家参考。郸城一高多少学生考上清华北大在河南&#xff0c;有一所知名的高中&#xff0c;它的知名度仅次于衡水中学&#xff0c;它就是位于周口…

用户关系表 存储_列式存储系列(一)CStore

作者:辛庸&#xff0c;阿里巴巴计算平台事业部 EMR 技术专家。Apache Hadoop&#xff0c;Apache Spark commiter。对 Hadoop、Spark、Hive、Druid 等大数据组件有深入研究。目前从事大数据云化相关工作&#xff0c;专注于计算引擎、存储结构、数据库事务等内容。序本文是列式存…

装修月记第一弹,硬装篇

硬装完成进入配饰阶段&#xff0c;特此记录。 房屋位置&#xff1a; 首先是入户这个地方&#xff0c;由于没有设计生活阳台&#xff08;靠&#xff0c;有入户没生活阳台&#xff0c;有生活阳台没入户&#xff0c;真是很FT&#xff0c;FT的蓝光&#xff09;所以热水器和气表放在…

FileUpload之单个文件上传

拖一个FileUpload控件,设计如图: 查看源&#xff1a; <body> <form id"form1" runat"server"> <div> <asp:FileUpload ID"UploadFile" runat"server" /> <br /> <asp:Bu…

excel可以处理html吗,处理包含XML/HTML元素的Excel文件

在Excel文件中包含大量HTML元素时&#xff0c;会带来以下问题&#xff1a;1.字数分析不准确&#xff1b;2.HTML元素和内容混杂在一起&#xff0c;翻译员需要处理这些元素&#xff0c;在处理过程中&#xff0c;可能会更改、丢失HTML元素&#xff0c;这可能会给客户造成影响&…

spring 动态代理_分析动态代理给 Spring 事务埋下的坑

前言Spring的声明式事务让我们不在编写获得连接、关闭连接、开启事务、提交事务、回滚事务等代码&#xff0c;通过一个简单的Transactional注解&#xff0c;就让我们轻松进行事务处理。我们知道Spring事务基于AOP&#xff0c;采用动态代理实现&#xff0c;虽然使用简单&#xf…

计算机的网络功能不包括下面项,计算机网络中,防火墙的功能不包括

摘要&#xff1a;害的通意在城展预中健康教育外伤防交市开&#xff0c;计算机网行A人员、管政策驾驶影响因素安全不系理与带的分析是进。人E人核好年儿年D骨结童B、防火婴幼儿青少青壮、老、成发于。菌血以下清学对真的认试验识&#xff0c;不包新型检测菌、结合菌B、检隐球不能…

sql server 千万级大数据sql更新_医疗SQL每日实例6数据更新大法

Update Day数据更新大法生/命/不/止/SQL/不/休01更新数据的铁规所有数据在被更新之前&#xff0c;必须先查询出数据结果&#xff0c;确认无误&#xff0c;再复制整行到下两行。将select * 更改为upate ,然后选择整个UPDATE 语句后&#xff0c;再执行命令。否则一旦出问题&#…

react中引入html文件,在react中怎么引用js

在react中怎么引用js推荐两种引入的方法&#xff0c;当然也可以自己编写一个JS类(ES6语法)实现动态插入JS到页面&#xff0c;然后在React项目引入。第一种&#xff1a;使用插件 react-load-script如果没有安装可以使用 yarn add react-load-script 或者 npm install react-load…

计算机无法访问桌面,桌面无法显示_电脑桌面显示:无法访问,你可能没有权限使用网络......

电脑桌面图标不能显示是什么原因&#xff1f;电脑桌面图片不显示有以下几种原因:一、在桌面点击右键&#xff0c;然后选择查看&#xff0c;显示桌面图标按钮。勾选按钮后桌面突变便可以显示出来。如果是开机不能操作是死机了&#xff0c;重启一下电脑试试&#xff0c;还是不行开…