参考论文:https://pdfs.semanticscholar.org/56f1/49e51aa9fb9b0b46412b864839f34701d421.pdf
先使用3点运动均值滤波器处理一维信号,先前向再后向处理。作为例子,这里先生成正弦信号波形图,然后执行3点前向运动均值滤波,再3点均值后向运动滤波。信号S(n)={s1,s2,s3,s4,…,sn}.

x = 0:0.05:50*pi;
row_acc = sin(x);
m = length(row_acc);
row_acc1 = linspace(0,0,m);
row_acc1(1) = row_acc(1);
row_acc1(m) = row_acc(m);
for i=2:m-1row_acc1(i)=(row_acc(i-1) + row_acc(i)+row_acc(i+1))/3;
end
figure;
plot(row_acc1);for i=m-1:-1:2row_acc(i) = (row_acc1(i-1) + row_acc1(i)+row_acc1(i+1))/3;
end

找到局部最小值和局部最大值及其对应的位置,波峰点、波谷点满足:

peaks = linspace(0,0,m);
valleys = linspace(0,0,m);
peakindexs = linspace(0,0,m);
valleyindexs = linspace(0,0,m);
peakindex = 1;
valleyindex = 1;
for i = 2:m-1if row_acc(i) >row_acc(i-1) && row_acc(i)>=row_acc(i+1)peaks(peakindex)=row_acc(i);peakindexs(peakindex)=i;peakindex = peakindex+1;endif row_acc(i) < row_acc(i-1) && row_acc(i)<row_acc(i+1)valleys(valleyindex)=row_acc(i);valleyindexs(valleyindex)=i;valleyindex=valleyindex+1;end
end

计算VPD,VPD(n)表示第n个波谷点的值与第n个波峰点的值的差,VPD用来去掉那些假的波峰点,

计算了VPD之后,搜索VPD,如果满足:
,则这个波峰点是假的,移除。

程序流程如下:

matlab代码:

pcount = peakindex-1;
vcount = valleyindex-1;
peakindices = linspace(0,0,pcount);
for i = 1:pcountpeakindices(i) = peakindexs(i);
endvalleyindices = linspace(0,0,vcount);
for i = 1:vcountvalleyindices(i) = valleyindexs(i);
endfigure;
plot(x, row_acc,'-o', 'MarkerIndices',peakindices,'MarkerFaceColor','red','MarkerSize',5);figure;
plot(x, row_acc,'-s', 'MarkerIndices',valleyindices,'MarkerFaceColor','red','MarkerSize',5);if pcount>2 && vcount>2if peakindexs(1) < valleyindexs(1)peakindex=2;elsepeakindex=1;endvindex=1;
endif peakindex == 2for i = 1:m-1peaks(i)=peaks(i+1);endpcount = pcount-1;pindex=1;
endvpd = linspace(0,0,m);
vpd1 = linspace(0,0,m);
for i=1:pcountvpd(i) = peaks(i) - valleys(i);
enddels = linspace(0,0, pcount);
peakindexs1 = linspace(0,0,pcount);
if pcount > 2lastcount=pcount;curcount = 1;while lastcount ~= curcountlastcount = curcount;del_count = 0;for i = 2:pcount-1if vpd(i) <= 0.7 * (vpd(i-1) + vpd(i)+vpd(i+1)) / 3dels(i)=1;endendcount = 1;for i = 1:pcountif dels(i) ~= 1vpd1(count) = vpd(i); peakindexs1(count) = peakindexs(i);count = count+1;elsedel_count = del_count + 1;dels(i) = 0;endendpcount = pcount - del_count;for i = 1:pcountvpd(i) = vpd1(i); peakindexs(i) = peakindexs1(i);endpeakindexs(pcount+1) = 0;vpd(pcount+1) = 0;indices = linspace(0,0,pcount);for i = 1:pcountindices(i) = peakindexs1(i);endfigure;plot(x, row_acc,'-o', 'MarkerIndices',indices,'MarkerFaceColor','red','MarkerSize',10);curcount = pcount;end
end

一维信号峰值检测Matlab实现相关推荐

  1. (MATLAB)一维信号峰值检测findpeaks

    (MATLAB)一维信号峰值检测findpeaks 基本介绍 findpeaks函数用法 基本用法 特殊用法 其他 by HPC_ZY 一维信号波峰波谷检测,峰值.峰宽.到达时间计算.MATLAB自带 ...

  2. 【信号】用matlab实现一维信号的高斯滤波

    1.从正态分布说起 高斯滤波使用的是高斯函数,即我们熟悉的正态分布的概率密度函数: f(x)=1σ2πexp(−(x−μ)22σ2)f(x)=\frac{1}{\sigma \sqrt{2\pi}} ...

  3. 利用matlab实现DMD动态模态分解(在一维信号或二维流场矢量中的应用)

    利用matlab实现DMD动态模态分解(在一维信号或二维流场矢量中的应用) 0 前言 0.1 特征根的计算与含义 1 DMD的基本思路 2 一维DMD算法 3 二维DMD算法 4 总结 (2020年9 ...

  4. 利用matlab实现POD分解(在一维信号或二维流场矢量中的应用)

    利用matlab实现POD分解(在一维信号或二维流场矢量中的应用) 0 前言 0.1 matlab中特征值计算 0.2 matlab中SVD分解计算 0.3 信号的正交性 1 一维信号POD分解 1. ...

  5. 【Matlab系列】一维信号/数字图像小波阈值去噪(软阈值,硬阈值,固定阈值)【含Matlab源码】

    Date: 2022.4.23 文章目录 前言 0.代码获取方式 1.部分matlab代码 2.一维信号小波阈值去噪效果图 3.数字图像小波阈值去噪效果图 3.1.添加高斯噪声 3.2.添加随机噪声 ...

  6. 【信号处理】心电信号PQRST峰值检测matlab工具箱

    1 简介 一种基于PQRST波位置识别的心电信号峰值检测方法,通过使用一种基于PQRST波位置识别的心电信号峰值检测方法,进一步挖掘出心电波形的特征,利用一种基于PQRST波位置识别的心电信号检测方法 ...

  7. 一维信号小波阈值去噪 c语言,一维信号小波阈值去噪

    描述 1.小波阈值处理基本理论 所谓阈值去噪简而言之就是对信号进行分解,然后对分解后的系数进行阈值处理,最后重构得到去噪信号.该算法其主要理论依据是:小波变换具有很强的去数据相关性,它能够使信号的能量 ...

  8. C语言实现一维信号小波阙值去噪

    实现小波阙值去噪分三个步骤: 1.将源信号分解成系数: 2.根据分解的系数获取阙值: 3.根据阙值对系数进行过滤: 4.将过滤的系数还原成信号,最终的结果就是将源信号过滤后的结果. 我实现的代码主要是 ...

  9. 步进频雷达的一维距离像matlab仿真

    步进频雷达的一维距离像matlab仿真 发射与回波信号模型 距离高分辨原理 仿真分析 不进行步进频高分辨一维距离像 进行步进频高分辨一维距离像 代码 发射与回波信号模型   步进频率信号发射得的是一串 ...

最新文章

  1. centos设置固定IP方法
  2. 计算机伦理问题案例分析,基于网络环境的案例教学在《计算机伦理学》中的实践研究...
  3. C#中处理XML文档的方法
  4. C语言希尔排序(解析)
  5. 东南亚下半年做什么产品好?解读Lazadashopee服装类热销及需求品类
  6. gitblit mysql_CentOS7安装MySQL、Tomcat和GitBlit记录
  7. SP和Fuction的关系
  8. “约见”面试官系列之常见面试题之第六十七篇之jsonp原理和实现(建议收藏)
  9. 结构与算法(04):排序规则与查找算法
  10. javascript 轮播图(缓存效果)详细篇
  11. 海思视频监控芯片如何一步步成为行业霸主
  12. 在Ubuntu20.04(Linux Mint)中同步通达信软件的自选股和画线数据
  13. java的package怎么用_Java包(Package)的详细用法(转)
  14. excel表格打印每页都有表头_怎样设置Word表格打印时每页都显示表头?不会的看看这篇教程!...
  15. 【HNOI2017】大佬-dalao
  16. Webpack 如何抽离、压缩 CSS 文件?
  17. python量化羊驼法则
  18. 互联网业务实战(一)--今日头条文章发布实现
  19. 2.海康威视-web3.0插件连接摄像头实现预览效果
  20. XMPP 协议的原理和介绍

热门文章

  1. google recaptcha v2 and v3
  2. 山东移动咪咕MG2000_KJ_S905L2B_RTL8822BS_线刷固件包
  3. latex参考文献bib基本格式_在Latex中使用Bibtex生成参考文献
  4. SAE 1939学习笔记(一)
  5. 如何使用endnote软件导入参考文献
  6. 系统(架构)设计五要素
  7. 【踩坑笔记】从零开始在Linux和Windows部署安装 ***
  8. 颜值在线的Mac播放器推荐-IINA
  9. 一个基于Python数据大屏可视化开源项目
  10. mysql更新多表sql语句怎么写_MySQL多表updatesql语句总结