Matlab 在一系列绘制的值中对增长/减少最快和最长的部分进行分类

Matlab 在一系列绘制的值中对增长/减少最快和最长的部分进行分类,matlab,Matlab,我有一系列绘制的值(x,y)。我正在寻找一种方法,通过最快的和最长的增长/下降斜率对每个片段{(Xi,Yi),(Xi+1,Yi+1)}进行分类。 在示例图像中,段(620635)的斜率大于段(516550),但第二段比第一段长。所以在这张图表中,线段(516550)将是第一个,因为它呈现非常高的坡度,而且非常长。 第二名为路段(620635),该路段坡度确实很高,但长度小于前一路段。如何在matlab中计算此值?给定定义线段的两个向量x和y,每个线段的长度为: sqrt(diff(x).^2

我有一系列绘制的值
(x,y)
。我正在寻找一种方法,通过最快的最长的增长/下降斜率对每个片段
{(Xi,Yi),(Xi+1,Yi+1)}
进行分类。

在示例图像中,段(620635)的斜率大于段(516550),但第二段比第一段长。所以在这张图表中,线段(516550)将是第一个,因为它呈现非常高的坡度,而且非常长。
第二名为路段(620635),该路段坡度确实很高,但长度小于前一路段。如何在matlab中计算此值?

给定定义线段的两个向量
x
y
,每个线段的长度为:

sqrt(diff(x).^2 + diff(y).^2);
每个线段斜率的绝对值(因为这似乎是您正在使用的)是

现在,根据每一项对应用程序的重要性,以某种合适的方式将这两项结合起来,给出一个度量。例如,为坡度指定两倍的权重:

metric = sqrt(diff(x).^2 + diff(y).^2) + 2*abs(diff(y)./diff(x));
然后根据此指标进行排序:

[~, IX] = sort(metric, 'descend');
IX(1)
将是所选度量值最大的线段斜率线段向量的索引。其终点是
[x(IX(1)),y(IX(1))]
[x(IX(1)+1),y(IX(1)+1)]

若对应用程序很重要,可以使用斜率和长度的任意复杂函数作为度量。如果在应用程序中两个
x
值可能相同,则需要小心处理生成的
NaN
s

1)你的标准是什么?您希望如何结合速度和长度?有很多方法可以做到这一点。2) 你想考虑几个点连续递减的情况吗?听起来很有趣,但很难为度量选择合适的参数。保留与您所写的相同的度量,该段(516550)是该图表中的第六个。但在我看来,这应该是第一次。即使我找到了一个合适的度量,我也不能确定这个图的正确参数是否适合每个图。所以可能需要一个不同的策略。我想计算三角形的面积,它是由线段(假设)和平行的x轴和y轴(阴极)实现的。你怎么认为?面积可能是最可靠的指标吗?如果不知道你想要达到什么目标,很难提出一个理想的指标,而我选择的指标只是一个随机选择。但你可以尝试一下:我建议的答案只是一种将线段的多个“特征”组合起来并根据组合进行排序的方法。您不限于两个特性:您可以添加diff(x)。*diff(y)(是您提到的面积的两倍)作为度量中的另一个术语。此外,你不局限于一系列功能的加权总和:你可以使用幂、积,几乎任何你喜欢的东西。很难解释我真正喜欢什么,因为主要的问题非常大和复杂。事实上:最快和最长的增长/下降段是我问题的关键点,因此该段中的点需要进一步分析。不管怎样,你的回答给了我新的想法,所以谢谢你。我正在试验面积解,希望这将避免我对适当度量的研究。
[~, IX] = sort(metric, 'descend');