matlab - 绘制具有特定条件的趋势线(例如特定 x 值的斜率,必须通过特定点等)

matlab - plot trendline with specific condition(e.g. slope at specific x value, must past through specific point,etc)

美好的一天。

我在 MatLab 中绘制了散点图。我也想在绘图上绘制数据趋势线。但是我想在 x=0 时用斜率=0 来约束趋势线,而不是正常的二次曲线拟合。我怎样才能做到这一点?

出于好奇,如何限制趋势线必须通过特定点?就像在 excel?

中设置拦截一样

趋势线可以像我上面描述的那样有多个约束吗?

谢谢。

您想对您的数据拟合二次方程 a*x^2+b*x+c,但您希望导数在某处为零。这是一个将变量关联起来的额外约束。导数是 2*a*x+b 所以要在 x=0 处为 0,你需要 b=0。因此,您现在正在尝试使 a*x^2+c 适合您的数据。这个不算太难,

A=[x(:).^2 ones(size(x(:)))];
coeffs=A\y(:);
fittedY=@(x) coeffs(1)*x.^2+coeffs(2)

fittedY(x)给出拟合曲线在x处的值。

如果你想让你的拟合有一个特定的值,而不是某个地方的某个导数,你做类似的事情。假设您希望 x=1 处的拟合值等于 1。然后a+b+c=1,所以设置c=1-b-a,你拟合的函数就是a*x^2+b*x+1-b-a.

您最多可以使用三个这样的约束,但是使用 3 个约束将(通常)唯一地确定一个二次函数,因此将没有剩余的参数可以适应。