【问题标题】:how to evaluate curve fitting in Matlab如何在 Matlab 中评估曲线拟合
【发布时间】:2014-05-15 18:04:38
【问题描述】:

我正在使用 Matlab 分析一些数据,因为我需要曲线拟合,我从文档中编写了这段代码:

% I is  14 points vector that change its value in a loop 

y =0:13;
[p,S] = polyfit(I,y,1);
[fx, delta] = polyval(p,I,S);
plot(y,I,'+',fx,I,'-');

这是我得到的:

我的问题是,如何评估这个“拟合”,我的意思是它有多好,我怎样才能得到这条线的斜率?

更新

在 Rafaeli 的回答之后,我很难理解结果,因为 fx 是考虑到 'I' 的 y 的拟合曲线拟合,这意味着我得到了 `fx':

-1.0454    3.0800   4.3897    6.5324   4.0947  3.8975   4.3476   9.0088  5.8307  6.7166 9.8243  11.4009  11.9223

I 的值是:

 0.0021  0.0018   0.0017  0.0016  0.0018 0.0018 0.0017   0.0014  0.0016 0.0016  0.0014 0.0012 0.0012 0.0013

情节的值正好是“I”:

所以我希望得到的结果应该接近这些值!试图切换

[p,S] = polyfit(y,I,1);

但不是更好fx= 0.0020,所以我的问题是我该怎么做?

第二次更新 明白了,代码如下:

y = 0:13 p = polyfit(y,I,1) fx = polyval(p,y); plot(y,I,'+',y,fx,'o')

结果如下:

感谢您的帮助!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    直线由y = ax + b定义,其中a = p(1)b = p(2),所以斜率为p(1)

    了解拟合程度的简单方法是取误差的均方根:rms(fx - I)。值越小,拟合越好。

    【讨论】:

    • 只有一个问题,我的数据向量是 I not y 使用 rms(fx-y) 是否正确
    • 你是对的,我的错!我会编辑答案,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多