如何在Matlab中计算“比较”功能

时间:2019-02-22 03:28:01

标签: matlab mean-square-error

我正在研究均方根误差(RMSE)和归一化均方根误差(NRMSE)。

根据Wikipedia's article并根据Matlab's function

为什么Wikipedia的NRMSE手动的NRMSE值与MATLAB的compare代码的NRMSE为何不相同?

您能教我如何数学计算compare函数吗?

例如,我做了如下。维基百科的方法:

Vt = 1:11;
V1 = [11.5 7.6 6.7 8.3 7.7 7.4 6.5 5.6 6.6 11.2 11.9]; % obseved data
V2 = [11.9 10.8 8.3 9.6 11.4 10.2 12.4 9.6 8.3 8 9]; % estimationd data
RMSE = sqrt(mean((V1-V2).^2)); % RMSE = 3.14107
NRMSE = RMSE/(max(V2)-min(V2)) % NRMSE = 0.71

MATLAB的比较内部函数:

% to use compare
VV1 = iddata(V1', Vt');
VV2 = iddata(V2', Vt');
compare(VV1,VV2) % -48.46%

1 个答案:

答案 0 :(得分:2)

根据compare文档,Matlab对NRMSE的估计与您的估计不同。

您需要知道有很多方法可以计算RMSE和NRMSE。在您链接到Root-mean-square deviation的Wikipedia文章中:

  

文献中没有没有统一的标准化方法

您选择了一种方法,而Matlab有另一种方法。

fit

因此,如果要匹配Matlab的结果,则应该执行以下操作:

NRMSE = 100*(1 - norm(V1-V2)/norm(V1-mean(V1)))
[y,fit,x0] =compare(VV1,VV2); fit

这将返回

 NRMSE =
  -48.4595

 fit =
  -48.4595