基于matlab的简单的寻找波峰波谷处理方法
- clc; close all; clear;
- % 节点信息
- data=[105.03 99.18 84.965 72.445 68.994 77.265...
- 91.052 100.61 98.215 86.363 74.439 71.625...
- 80.061 92.18 97.823 91.483 80.241 73.616...
- 78.547 89.084 94.924 89.689 79.898 75.485...
- 81.544 89.485 90.578 83.712 77.401 80.18...
- 86.904 88.721 83.468 78.971 81.983 86.25...
- 85.224 80.901 80.808 84.488];
- % 微分变号信息
- c=findpeaks(data);
- IndMin=find(diff(sign(diff(data)))>0)+1; %获得局部最小值的位置
- IndMax=find(diff(sign(diff(data)))<0)+1; %获得局部最大值的位置
- figure; hold on; box on;
- plot(1:length(data),data);
- plot(IndMin,data(IndMin),'r^')
- plot(IndMax,data(IndMax),'k*')
- legend('曲线','波谷点','波峰点')
- title('计算离散节点的波峰波谷信息', 'FontWeight', 'Bold');
初始化一段数据,寻找波峰波谷数据如下:
求极值的具体语句:
极值:
data是你的数据,
find(diff(sign(diff(data)))==-2)+1
找到极大值的位置
find(diff(sign(diff(data)))==2)+1
找到极小值的位置
data(find(diff(sign(diff(data)))==-2)+1)和
data(find(diff(sign(diff(data)))==2)+1)
返回的是极大值和极小值
要想diff(sign(diff))出现-2,只有是sign的结果为-1,1排列的时候,-1代表,前一次的diff运算前面的数值比后面大,1代表,后一次diff运算后面的数值比前面大,因而,x-a,x,x+b,a,b均为正数,则x为极小值。
同理判断极大值。
find查找到极值的索引后还要+1,是因为,差分运算(diff)后的数据的长度比原始数据少1,见help。
%方法一
x=0:0.01:20;
y=2*sin(x/2)+cos(2*x)/2;
% indmax=find(diff(sign(diff(y)))<0)+1;%极大值点
% indmin=find(diff(sign(diff(y)))>0)+1;%极小值点
ind=find(diff(sign(diff(y)))~=0)+1;%极值点
plot(x,y,x(ind),y(ind),'ro')
%方法二
x=0:0.01:20;
y=2*sin(x/2)+cos(2*x)/2;
indmax=intersect(find(diff(y)>0)+1,find(diff(y)<0));%极大值点
indmin=intersect(find(diff(y)<0)+1,find(diff(y)>0));%极小值点
plot(x,y,x(indmax),y(indmax),'ro',x(indmin),y(indmin),'go')
%方法三
x=0:0.01:20;
y=2*sin(x/2)+cos(2*x)/2;
yf=y(2:end-1)-y(1:end-2); %前向差分
yb=y(2:end-1)-y(3:end); %后向差分
I=find(yf.*yb>=0)+1; %寻找极值点(不考虑首尾两点)
plot(x,y,'b',x(I),y(I),'r*');
基于matlab的简单的寻找波峰波谷处理方法相关推荐
- PyQt5_寻找波峰波谷并可视化
在K线图分析中经常需要查看波峰与波谷的情况,鉴别是否后续高点是否高于或低于前一个高点,后续低点是否高于或低于前一个低点:另一种情况是寻找曲线形态,诸如头肩顶(底).双重顶(底)等.在K线图中直接查找会 ...
- 基于MATLAB的简单手势识别
匆匆在看完了MOOC的<数字图像处理>,为了巩固所学,做了一个简单的手势识别(只能识别手势1.2.3)! 0.安装硬件支持包软硬件安装 0.1.MATLAB R2021b安装 软件包下载地 ...
- matlab fdatool陷波器,基于MATLAB的简单50Hz数字陷波器.doc
基于MATLAB的简单50Hz数字陷波器 摘要:陷波器是一个二阶滤波器,它的幅度特性在ω=±ω0处为零,在其他频率上接近常数,是一个滤波单频干扰的滤波器.一般仪器都用50Hz的交流电源供电,因而信号中 ...
- FLAC3D可视化后处理matlab,一种基于Matlab的由Midas导入Flac3D的模型识别方法与流程...
本发明涉及岩土工程的仿真模拟研究领域,具体涉及一种基于Matlab的由Midas导入Flac3D的模型识别方法. 背景技术: 随着我国近几年经济的快速发展和基础设施等的大力投资,涉及复杂地质环境下的岩 ...
- MATLAB在温室中的应用,基于MATLAB的日光温室内气温的图形显示方法与流程
本发明涉及日光温室温度检测 技术领域: ,具体涉及一种基于MATLAB的日光温室内气温的图形显示方法. 背景技术: :日光温室极大丰富了人们的菜篮子,丰富了人们的生活,各地日光温室的墙体材料不尽相同, ...
- matlab手写字母识别,一种基于MATLAB的手写字母的神经网络识别方法
文章编号 :1009 - 671X(2001) 10 - 0028 - 03 一种基于 MATLAB 的手写字母的神经网络识别方法 邓铭辉 ,孙 枫 ,张 志(哈尔滨工程大学 自动化学院 ,黑龙江 哈 ...
- matlab 浮雕,基于MATLAB根据图片快速制作陶瓷浮雕的方法与流程
本发明属于陶瓷制作技术领域,尤其涉及基于MATLAB根据图片快速制作陶瓷浮雕的方法. 背景技术: 印模成形是传统的陶艺成形工艺之一,它具有制作简便.省时省力.对制作者没有过多的技艺要求的优点,因而直到 ...
- Matlab测折射率,基于MATLAB辅助测量透明介质折射率的新方法
- 44 - 基于 MATLAB 辅助测量透明介质折射率的新方法 肖伦刚 余 东 向文丽 (楚雄师范学院物理与电子科学学院,云南 楚雄 675000) [摘 要]利用迈克尔逊干涉仪和自制的旋转卡尺组装 ...
- 电动车动力性计算MATLAB程序,一种基于MATLAB的电动汽车经济性计算的模拟仿真方法与流程...
技术领域 本发明属于电动汽车经济性计算的模拟仿真方法,具体涉及一种基于MATLAB的电动汽车经济性计算的模拟仿真方法. 背景技术: 电动汽车经济性(续驶里程)计算的传统方法分为两种,其一为使用exce ...
最新文章
- C 语言编程 — 输入/输出与文件操作
- Java Review - 使用Event Bus实现目录变化的监控
- 指哪分哪:交互式分割近期发展
- docker镜像制作(二)——构建企业镜像LAMP+BBS
- 双稳态继电器工作原理图_三招带你分清继电器与接触器
- django-debug-toolbar 工具
- 矿区无人机影像地物提取(语义分割)
- C#:重启后,AssemblyInfo中AssemblyTitle的描述内容显示正常.........
- 【运动学】基于matlab速度+加速度数值计算(匀速圆周运动) 【含Matlab源码 975期】
- html5 调用unity,Unity调用UniWebView打开H5界面脚本
- Android 刷机脚本工具箱
- php钱汇算成美元,PHP to USD
- 从空运物流到无人机物流,圆通将战火烧到了时效件
- 增强 扫描王 源码_camscanner(扫描全能王)功能解析与复现 - 页面增强
- linux获取pc指针地址,为什么pc可以看成使程序存储器的地址指针
- 偶数c语言中怎么写,偶数怎么写
- 将真分数分解为埃及分数
- 预后建模绕不开的lasso cox回归
- 总结JavaScript的数据类型转换
- Linux CentOS(常用命令)