【问题标题】:Roots for Matlab polyfit with mu for centering and scalingMatlab polyfit 的根,带有 mu 用于居中和缩放
【发布时间】: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


【解决方案1】:

对于中心化和重新调整的拟合[p,~,mu]=polyfit(x,y,n),该函数首先计算中心化和重新调整的x_bis = (x-mu(1))/mu(2)(其中mu(1) = mean(x)mu(2) = std(x))。然后它计算拟合多项式系数。因此多项式系数将是您重新定位和重新调整的x_bis 的系数,这与您的原始信号x 不同。

(在此链接上 - https://fr.mathworks.com/help/matlab/ref/polyfit.html - 有 x 的重新缩放和重新定位的详细信息)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多