0

我有一系列绘制的值(x,y)。我正在寻找一种方法来识别具有最快增长/下降率的段 {(Xi, Yi), (Xi+1, Yi+1)}。 绘制值 在示例图像中,这些段被标记并具有以下 X 坐标 (516, 550) 用于最快增加的段和 (620, 635) 用于最快下降段。我如何定义一个算法来做到这一点?

4

2 回答 2

2

计算每条线段的斜率。跟踪斜率的最大值和最小值。这些将分别对应于增长率最大和下降率最大的部分。

于 2011-11-29T18:34:04.353 回答
0

以下示例代码应该为您提供解决问题的方法:

%Create x and y values
x = 1:0.5:20;
y = real((x-15).^2.2.*sin(x)-0.5*x);

%Plot
f1 = figure(1);clf
plot(x,y)

%Calculate derivative
dx = abs(conv(y,[1 -1],'same'));

%Find maximum change
[maxSlope idx] = find(dx==max(dx));

%Display derivative and maximum change points
hold on
plot(x+0.5,dx,'g')
plot(x(idx+1),y(idx+1),'*r')
grid on

legend('Data series','abs(Derivative)','Point of maximum change');

我创建了一个玩具数据集,并找到了 y 变化最大的点。请注意,这里假设等距点(x 线性增加)。您的数据是否均匀分布?

结果图: 在此处输入图像描述

于 2011-11-29T22:18:06.253 回答