均匀采样信号的鲁棒Savistky-Golay滤波(MATLAB)

news2024/11/29 4:47:35

S-G滤波器又称S-G卷积平滑器,它是一种特殊的低通滤波器,用来平滑噪声数据。该滤波器被广泛地运用于信号去噪,采用在时域内基于多项式最小二乘法及窗口移动实现最佳拟合的方法。与通常的滤波器要经过时域-频域-时域变换不同,S-G滤波直接处理时域数据进行平滑,其平滑效果随窗口宽度不同而不同。相对于均值平滑滤波,S-G滤波更能保留相对极大值、极小值和宽度等分布特征。该滤波算法的另一优点是其运算量相对较小,对计算机的内存及数据处理能力要求较低。鉴于此,采用一种鲁棒Savistky-Golay滤波器对均匀采样信号进行降噪平滑,运行环境MATLAB 2021。


for i = 1:step:N

    ind1 = max(1,i-half_window) ;
    ind2 = min(N,i+half_window) ;
    y_spl = y_input(ind1:ind2) ;
    x_spl = [ind1:ind2]' ;

    weights = ones(size(y_spl)) ;

    p = inf(order+1,1) ; s = inf ; ds = 1 ; dp = 1 ;

    X = repmat(x_spl,1,order+1).^[order:-1:0] ;
    c = 4.685 ; nb_iter = 0 ;

    while (abs(ds) >= opts.TolFun) || (abs(dp) >= opts.TolX)

        if nb_iter > opts.MaxIter
            break
        end

        nb_iter = nb_iter+1 ;

        old_p = p ;
        p = (sqrt(weights).*X)\(sqrt(weights).*y_spl) ;
    
        y_spl_calc = X*p ;
        r = y_spl_calc-y_spl ;
        tau = median(abs(r-median(r)))/0.6745 ;
        if tau == 0
            s = std(r)*sqrt(1+1/numel(y_spl)+(i-mean(x_spl)).^2/sum((x_spl-mean(x_spl)).^2)) ;
            break
        end
        z = r/tau ;
        weights = (abs(z)<c).*(1-(z/c).^2).^2 ;
        weights = weights.*(weights>=0) ; 
        old_s = s ;
        s = std(r,weights)*sqrt(1+1/numel(y_spl)+(i-sum(weights.*x_spl)./sum(weights)).^2/sum((x_spl-sum(weights.*x_spl)./sum(weights)).^2)) ;
        dp = max((old_p-p)./p) ;
        ds = (old_s-s)/s ;

    end

    y3(i,:) = p' ;
    y2(i,1) = s ;
    y1(i,1) = polyval(p,i) ;
 
end

if y_input_type == "row"
    y1 = y1' ;
    y2 = y2' ;
    x3 = y3' ;
    y_input = y_input' ;
    x_interp = 1:step:N ;
    x_query = 1:N ;
else
    x_interp = [1:step:N]' ;
    x_query = [1:N]' ;
end

if step == 1
    % No need for interpolation.
    return
end

y1 = interp1(x_interp,y1(1:step:N),x_query,opts.Interpolation,"extrap") ;
y2 = interp1(x_interp,y2(1:step:N),x_query,opts.Interpolation,"extrap") ;
y3 = interp1(x_interp,y3(1:step:N,:),x_query,opts.Interpolation,"extrap") ;

图片

图片

图片

图片

  • 工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
    
    代码通过知乎学术咨询获得:https://www.zhihu.com/consult/people/792359672131756032?isMe=1

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

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

相关文章

Linux操作系统的引导过程

系统初始化进程与文件、systemd概述、单元类型、切换运行级别、查看系统默认默认运行、永久切换、常见的系统服务&#xff08;centos&#xff09;-CSDN博客 centos 7系统升级内核&#xff08;ELRepo仓库&#xff09;、小版本升级、自编译内核-CSDN博客 ss命令详细使用讲解文…

Zigbee智能家居数据中心:微信小程序实时掌控家居传感器信息

摘要&#xff1a; 本文将介绍如何构建一个基于Zigbee和微信小程序的智能家居网关&#xff0c;实现对家居传感器数据的采集、汇总和展示。用户可通过微信小程序实时查看家中温湿度、光照等环境数据&#xff0c;为智能家居系统提供数据支撑。 关键词&#xff1a; Zigbee&#xf…

Docker简单入门

docker简单入门 &#x1f91a;我的博客&#x1f95b;前言 docker安装&#x1f537;常见命令镜像命令容器命令其他命令 docker部署mysql容器docker数据卷&#x1f537;挂载数据卷&#x1f537;本地目录挂载 创建一个自定义Docker镜像&#x1f537;镜像文件&#x1f537;构建镜像…

逻辑图框架图等结构图类图的高效制作方式不妨进来看看

**逻辑图框架图等结构图类图的高效制作方式不妨进来看看** 基于我们每天都在处理大量的数据和信息。为了更清晰地理解和传达这些信息&#xff0c;结构图、逻辑图和框架图等可视化工具变得越来越重要。然而&#xff0c;如何高效地制作这些图表并确保其准确性和易读性呢&#xf…

UCOS-III 任务同步机制-信号量

1. 信号量类型 1.1 二值信号量&#xff08;Binary Semaphores&#xff09; 二值信号量只有两个状态&#xff1a;可用&#xff08;1&#xff09;和不可用&#xff08;0&#xff09;。它主要用于任务之间的互斥访问或者事件通知。例如&#xff0c;当一个任务完成某个操作后&am…

浏览器打不开网页、但是电脑有网络,解决办法(win11)

2023.07.06测试有效 华为电脑拿去免费拆机保养后&#xff0c;发现浏览器连接不上网了&#xff0c;但是&#xff01;微信又能登录得上&#xff0c;也就是说电脑还是有网的。 原文链接 一、问题截图 二、解决方法 1.右键打开“网络和Internet设置” 2.打开“代理” 3.将该选项设…

匠心传承 筑梦大兴 大兴区餐饮行业职工职业技能竞赛完美收官

隆重举行&#xff0c;北京市商务局二级调研员林英杰&#xff0c;大兴区商务局党组书记、局长王丽娜&#xff0c;区总工会二级调研员侯月海&#xff0c;区商务局副局长、工会主席兰莉及各区县餐饮行业协会相关负责人、获奖单位、参赛职工等160余人参加大会。 此次竞赛通过前期调…

东莞惠州数据中心机房搬迁方案流程

进入21世纪以来&#xff0c;数据中心如雨后春笋般在各行各业兴建起来&#xff0c;经过近20年的投产运行&#xff0c;大量的数据中心机房存在容量不足、机房陈旧、设备老化无法支撑业务发展的情况&#xff0c;产生机房改造、搬迁需求。为安全、可靠地完成机房搬迁&#xff0c;减…

Unity中使用VectorGraphics插件时,VectorUtils.RenderSpriteToTexture2D方法返回结果错误的解决方法

Unity中使用VectorGraphics插件时&#xff0c;如果使用VectorUtils.BuildSprite方法创建Sprite&#xff0c;那么得到的Sprite往往是一个三角网格数比较多的Sprite&#xff0c;如果想要得到使用贴图只有两个三角面的方形Sprite&#xff0c;可以使用该插件提供的VectorUtils.Rend…

pandas读取CSV格式文件生成数据发生器iteration

背景 数据集标签为csv文件格式&#xff0c;有三个字段column_hander [‘id’, ‘boneage’, ‘male’]&#xff0c;需要自己定义数据集。文件较大&#xff0c;做一个数据发生器迭代更新数据集。 实现模板 在Pandas中&#xff0c;可以使用pandas.read_csv函数读取CSV文件&…

TTS文本转声音:fish-speech 推理、requests访问接口案例

参考: https://hub.docker.com/r/lengyue233/fish-speech https://speech.fish.audio/inference/#http-api 下载 下载模型: HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2下载的内容有…

HTML5使用<pre>标签:保留原始排版方式

在网页创作中&#xff0c;一般是通过各种标记对文字进行排版的。但是在实际应用中&#xff0c;往往需要一些特殊的排版效果&#xff0c;这样使用标记控制起来会比较麻烦。解决的方法就是保留文本格式的排版效果&#xff0c;如空格、制表符等。 如果要保留原始的文本排版效果&a…

How to use Solr as retriever in RAG

题意&#xff1a;怎样在 RAG 中使用 Solr 作为检索器 问题背景&#xff1a; I want to build a RAG (Retrieval Augmented Generation) service with LangChain and for the retriever I want to use Solr. There is already a python package eurelis-langchain-solr-vectors…

ABB机器人Socket 通讯相关指令

ABB机器人进行Socket 通讯时&#xff0c;首先需要安装PC Interface选项。以下对Socket 通讯时用到的相关指令做出介绍。 一、指令 1、socketdev Socketdev&#xff08;socket device&#xff09;&#xff0c;套接字设备是另一台网络计算机通讯链路的处理器。用于同其他网络计…

单链表在Python中的实现技巧

更多Python学习内容&#xff1a;ipengtao.com 链表是一种常见的数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含一个数据域和一个指向下一个节点的指针。链表的优点是插入和删除操作非常高效&#xff0c;特别是在需要频繁修改数据结构的情况下。本文将详细介绍…

【深度学习】-WASB-调试说明

要改这么几个地方&#xff1a; 代码仓库&#xff1a;/Desktop/code/python_project/WASB-SBDT-main/ 篮球数据集xx_xx_11.xml只保留最后一个11.xml 并把11下直接放置11 video&#xff1a; 这里的东西被我改了&#xff0c;要以仓库为准

openssh版本升级实战(修补ssh漏洞)基于RedHat8.4版本测试--已成功升级

升级前具有漏洞的的版本 通过命令查看目前系统的ssh和sshd版本&#xff1a; ssh -V sshd -V 注意&#xff1a;由于ssh是远程连接服务器的功能&#xff0c;在进行下面操作升级openssh前&#xff0c;请打开多个连接会话保持&#xff0c;如升级失败&#xff0c;可通过已连接的会话…

Transform Data with SQL

rm -r dp-203 -f git clone https://github.com/MicrosoftLearning/dp-203-azure-data-engineer dp-203 cd dp-203/Allfiles/labs/01 ./setup.ps1 -- This is auto-generated code SELECTTOP 100 * FROMOPENROWSET(BULK https://datalakexxxxxxx.dfs.core.windows.net/fil…

hive表小练习

-- 将对应的命令写在每个步骤中 -- 1.在hive中创建数据库school create database if not exists school; -- 2.在数据库school中创建如下的表 每张表的列分隔符都是, 存储格式是textfile 创建表名为student_info, 字段为stu_id 类型为string,注释为学生id 字段为stu_name 类…

【Python学习】流程控制、函数与类详解

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 Python作为一门强大而又简洁的编程语言&#xff0c;提供了丰富的工具和结构来帮助开发者编写清晰、高效的代码。在本文中…