我想使用曲线拟合优度(GOF)来比较Matlab中的原始信号和滤波信号之间的相似率
答案 0 :(得分:1)
通常情况下,拟合优度检验假定经验数据和理论数据之间的比较......换句话说,在实际观察与由近似它们的函数产生的值之间进行比较。由于您正在使用曲线,fit function已经提供了执行测试所需的全部内容:
[fitobject,gof] = fit(x,y,fitType)
gof — Goodness-of-fit statistics, returned as the gof structure including the fields in this table:
sse - Sum of squares due to error
rsquare - R-squared (coefficient of determination)
dfe - Degrees of freedom in the error
adjrsquare - Degree-of-freedom adjusted coefficient of determination
rmse - Root mean squared error (standard error)
我们举个例子:
x = (0:0.2:5).';
y = 2 .* exp(-0.2 .* x);
[f1,gof1] = fit(x,y,'exp1');
figure(),plot(f1,x,y);
[f2,gof2] = fit(x,y,'poly1');
figure(),plot(f2,x,y);
从y
的声明中,由于没有添加噪声,我们知道与a = 2
和b = -0.2
的指数拟合会产生完美的结果,而多项式拟合会产生一个好的(但不是完美的)结果。
R2统计信息可以取0
和1
之间的任意值,其值更接近1
,表示更合适。由于我们没有使用额外的系数,因此评估我们的拟合绰绰有余,并且代表了在许多系数之间选择模型的良好标准。查看gof1
和gof2
结构(rsquare
字段)中包含的R2值,我们可以看到我们的小说已得到确认:在gof1
中,R2统计信息具有值1
(完美契合),而在gof2
中,相同统计量的值非常接近1
但不等于1
(非常合适)。