我一直想弄清楚一些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?
答案 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坐标。准确的峰值探测器?