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

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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密