0 引言
通常,我们对数据节点得到的曲线(或折线),需要计算其波峰波谷,也就是极值点。数学上是通过一阶导数等信息来获得极值点的,这里通过一阶微分来处理,得到极值信息。
1 极值计算
输入节点数据,要求计算波峰波谷(极大值、极小值),并作出标记。
代码
% By lyqmath
% DLUT School of Mathematical Sciences
% BLOG:http://blog.csdn.net/lyqmath
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];
% 微分变号信息
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');
结果
2 结论
根据输入数据向量做差分,并统计差分变号信息,进而得到数据节点的极值信息。