【发布时间】:2020-03-15 18:52:29
【问题描述】:
按照频繁出现的警告消息中的建议,我使用以下表单将代码更改为使用居中和缩放:
[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(使用平均值x 和 std(x) 由 mu 输出给出)。然后它计算拟合多项式系数。因此,多项式系数将是您重新调整和重新缩放的 x 的系数,这与您的原始信号 x 不同!
-
fr.mathworks.com/help/matlab/ref/polyfit.html 这里有 x 的重新缩放和中心化的细节。我不确定(对我来说做数学有点晚了)但尝试像这样计算你的阈值:threshold=roots([p(1:npoly) p(end)-thresholdLimit]) * mu(2) +亩(1);如果我是对的,这应该会给你正确的解决方案
-
谢谢,猕猴桃。我正是这样做的,它似乎奏效了。随意写它作为答案,我会赞成并接受它。
-
Okidoki 我很高兴它奏效了,很抱歉这个答案的迟到(最近几天城市因新冠病毒关闭而疯狂)! PS:顺便说一句,如果您有兴趣用数字量化配件的质量,请告诉我!我将深入研究我以前使用 polyfit 的第二个输出的输出来计算相关系数的一些旧 matlab 例程!
标签: matlab