matlab什么是代码段计算?

时间:2014-04-14 13:20:07

标签: matlab

我一直想弄清楚一些matlab代码在做什么。它需要三个带有X和相应Y值的数据点:

X ,Y

并且合适:

fy = polyfit(X, Y, 2)

这是三个X,Y数据点的二阶拟合。

然后是这行代码:

U = -fy(2) / (2*fy(1))

这似乎计算了X(1)和X(3)之间范围内的X值,但是我不确定它究竟在计算什么?为什么将fy(1)值乘以2?

1 个答案:

答案 0 :(得分:5)

fy(1)x^2项的系数,fy(2)x项的系数。 2*让我想到衍生物,所以让我们看看它是什么样的。首先是原始的二次拟合:

fy(1)*x^2 + fy(2)*x + fy(3)

现在衍生品:

2*fy(1)*x + fy(2)

啊哈,开始看起来很熟悉。如何设置等于零并求解x?

2*fy(1)*x + fy(2) = 0
2*fy(1)*x = -fy(2)
x = -fy(2) / (2*fy(1))
是的,就是这样。因此,它计算二次拟合的导数等于零的x位置。在曲线的一阶导数等于零的地方会发生什么?最大值或最小值。

因此,此代码查找数据二次拟合的最大值或最小值的x坐标。准确的峰值探测器?