在Matlab中找到离散数据集的拐点

时间:2015-06-02 14:07:03

标签: matlab dataset inflection

我有一个数据集(一个带有x和y值的数组),我最终想要拟合一个非线性模型。为了增加拟合良好的可能性以及模型将收敛,我希望提供尽可能接近解决方案的初始参数。我想要拟合的模型的一个参数对应于曲线的拐点。有没有办法可以在Matlab中估计离散数据集(不是连续函数)的拐点?我不希望事先进行曲线拟合,因为这是为了加速曲线拟合并增加其成功的可能性。

1 个答案:

答案 0 :(得分:2)

这个想法是分两步完成的:

  1. 首先定义什么是噪音水平,并将(xy)折线“简化”为某些“平滑”子集(xs,{{1 }})。在简化之后,曲线特征的每个变化都将被认为是重要的。

  2. 查找折线(ysxs)的凸度变化。

  3. 首先,您可以使用Douglas-Peucker算法,实施here

    第二点基于由折线的3个连续点构成的有符号区域:

    ys

    折线是“凸” - 即正曲率 - 这些区域是正的,而“凹” - 即负曲率 - 当区域为负时。曲率的变化是拐点所在的位置。

    从文件交换中下载 | x0 y0 1 | 1 | | A = - | x1 y1 1 | 2 | | | x2 y2 1 | 功能后,您可以运行以下代码(假设dpsimplifyx向量已存在):

    y