卷积平滑数据原理(有边缘效应)

2023-10-09 03:30

本文主要是介绍卷积平滑数据原理(有边缘效应),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、离散卷积的求法
假设两组数据
A(原始数据):[a b c d], B(平滑窗口)[1/2 1/3]
则A卷积B等于
(1) A*1/2 = a/2 b/2 c/2 d/2 (空) 不移位
(2) A*1/3 = (空) a/3 b/3 c/3 d/3 向右移一位
(3) (1) + (2) = a/2 b/2+a/3 c/2+b/3 d/2+c/3 d/3
二、卷积平滑数据
基于一的离散卷积求解过程,则卷积可以利用与平滑数据。
1、假设t的取值范围为-4~4平均分成100份,y = sin(t) + randn(100), randn(100)为100个标准正太分布中的随机取值(randn(100)为一个向量),则利用卷积来平滑数据的结果,其中平滑窗口为[1/10…..1/10] (10个1/10组成的向量):这里写图片描述
如图所示,原始数据为黑点,平滑数据为红色+号,在边缘部分数据变化趋势不准确,这是由于这里面使用的 python语句为:

convolution(y,window,'same') 
'''结果为数据集中间长度为Max(y,window)的结果,因此会有边缘效应'''

解释:由于平滑窗口为[1/10 1/10 1/10…..1/10],则基于一种离散卷积求解过程可得,其平滑结果为取本点与前面9个点之和的平均值。也就相当与每个点的增幅都被缩小了,因此可以用来平滑数据。居于此可得,当平滑窗口向量值越少时,数据越不平滑(每个点的增幅值被考虑的权重增大),如下例所示,平滑窗口为[1/2 1/2]:

这里写图片描述
解释:平滑数据为该点于前面一点的平均值,即每两点取一个平均值。
因此当平滑窗口越长时,数据越平滑,因为选取了更多的点取平均值,因此每一点的增幅权重将被降低,如图所示,平滑窗口为[1/50…1/50]
这里写图片描述
解释:如图所示平滑窗口为[1/50…1/50],此情况与原始数据形状偏离较大,因为数据越幅度越大的地方,增幅越小,再被平均了之后权重就变得更小。
为了更好的理解卷积平滑过程,令y = 2*t + randn(100),t的取值范围与正弦函数相同。如图所示
这里写图片描述
解释:平滑窗口为[1/10…/10]。
这里需要注意,无论平滑窗口中每一个元素取多小,结果都不会变成一条水平直线,因为一条直线每一点的增幅都是不变的,例如假设原始数据形状类似一条直线,且每一点增幅为0.1,则
(1)前一点原始:a(n);
卷积平滑之后(a(1)+a(2)+…+a(n))/n;
(2)本点a(n+1)
卷积平滑之后(a(2)+a(3)+…+a(n+1))/n
(3)两点之差(增幅):
原始:a(n+1)-a(n) = 0.1;
平滑:(a(n+1)-a(1))/n = n*0.1/n = 0.1;
所以卷积平滑数据只是平均每一点的增幅,当每一点的增幅都一样时,无论平滑窗口元素的值多小,都不会得到一条水平的直线(不考虑边缘效应),如图所示:
这里写图片描述
解释:平滑窗口为[1/50 1/50…1/50],且对应点与平滑窗口[1/10…1/10]的相同。这也解释了为什么正弦离散点平滑数据会与原始正弦离散点的图像有所不同,因为正弦函数每一点的增幅不同,其导数为cos(t),0点的增幅最大,pi/2点的增幅点最小,因此如果平滑窗口元素值过小时,越靠近极值点,由于其增幅很小,所以其平滑结果越偏离原始离散点。

三、结论
卷积平滑数据方法平滑的是每一点的增幅,且本点的平滑结果为前n点的平均值。适用于原始数据震动幅度不太大于理想数据的情形。

这篇关于卷积平滑数据原理(有边缘效应)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/170033

相关文章

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I