Matlab polyfit的根,带有用于定心和缩放的mu

Matlab polyfit的根,带有用于定心和缩放的mu,matlab,Matlab,我将代码更改为使用居中和缩放,如经常出现的警告消息中所建议的,使用以下表单: [p,~, mu] = polyfit(tScan(observationRange),aScan(observationRange),npoly); tPoly = linspace (tScan(observationRange(1)),tScan(observationRange(end)), 100); aPoly = polyval(p,tPoly,[],mu);

我将代码更改为使用居中和缩放,如经常出现的警告消息中所建议的,使用以下表单:

       [p,~, mu] = polyfit(tScan(observationRange),aScan(observationRange),npoly);
       tPoly = linspace (tScan(observationRange(1)),tScan(observationRange(end)), 100);
       aPoly = polyval(p,tPoly,[],mu);
但是在同一个代码中,我以前用这条线找到多项式的根

       threshold = roots([p(1:npoly) p(end)-thresholdLimit]);
它不再返回与我以前使用的居中和缩放相同的根。我以前得到的根是合理的价值观

多项式是二次的,所以它不应该那么复杂

Matlab根函数不使用定心和缩放参数


就多项式系数而言,居中和缩放到底是怎么回事?居中和缩放如何影响根的计算?我怀疑它们已经居中并缩放,但我不确定如何将它们转换为有用的值。

对于重新居中和重新缩放的拟合
[p,~,mu]=polyfit(x,y,n)
,函数首先计算重新居中和重新缩放的
x_bis=(x-mu(1))/mu(2)
(其中
mu(1)=平均值(x)
mu 2)=std(x)
)。然后计算拟合多项式系数。因此,多项式系数将是重新居中和重新缩放的
x_bis
的系数,这与原始信号
x
不同

(在这个链接上--有关于
x
的重新缩放和重新居中的详细信息)


因此,使用
threshold=roots([p(1:npoly)p(end)-thresholdLimit])*mu(2)+mu(1)
计算你的根,如果我是对的,应该会给你正确的解决方案

对于重新居中和重新缩放的拟合``[p,~,mu]=polyfit(x,y,n)`````,函数首先计算重新居中和重新缩放的x(使用mu输出给出的x和std(x)的平均值)。然后计算拟合多项式系数。因此,多项式系数将是重新居中和重新缩放的x的系数,这与原始信号x不同!有x的重新缩放和重新居中的详细信息。我不确定(为我做数学有点晚),但试着这样计算你的阈值:阈值=根([p(1:npoly)p(end)-thresholdLimit])*mu(2)+mu(1);如果我是对的,这会给你正确的解决方案谢谢Kiwi。我就是这么做的,而且似乎奏效了。请随意把它写下来作为答案,我会投票接受它。Okidoki我很高兴它起了作用,并为这个答案的迟来表示歉意(过去几天一直疯狂地用新冠病毒关闭纽约市)!PS:顺便说一下,如果你有兴趣用一个数字来量化配件的质量,告诉我!我将深入研究我的一些旧matlab例程,其中我使用polyfit的第二个输出计算相关系数!