MATLAB中两个不等长度数据集的RMSE?

时间:2018-01-25 21:17:26

标签: matlab

我想计算两个不相等数据集的RMSE。

数据集1的尺寸为1067x1,数据集2的尺寸为2227x1。

如何计算RMSE?

由于

2 个答案:

答案 0 :(得分:0)

很难回答不知道数据。 一种选择是将一个向量的长度插入另一个向量。如果您有例如两个数据集的时间戳。

v1 = rand(1067,1);
v2 = rand(2227,1);

v1_int = interp1(1:size(v2,1)/size(v1,1):size(v2,1), v1, 1:size(v2,1), 'linear', 'extrap')';
sqrt(mean((v1_int-v2).^2))

答案 1 :(得分:0)

在继续进行RMSE计算之前,您可以interpolate较小的向量,如下所示:

d1 = randn(1067,1);
d1_len = numel(d1);
d2 = randn(2227,1);
d2_len = numel(d2);

d1 = interp1(1:(d2_len / d1_len):d2_len,d1,1:d2_len,'linear','extrap');

plot(d2,'b');
hold on;
plot(d1,'r')
hold off;

或者,可以使用downsampleupsample函数,但它们需要更多关注最终输出数据和长度。完成此操作后,您可以使用以下代码获取RMSE

RMSE = sqrt(mean(((d2 - d1) .^ 2)));

RMSE实际上定义为误差平方均值的平方根,其中误差由观测值y与预测值ycap之间的差异给出...因此,请仔细选择哪一个向量代表前者,哪一个代表后者。有关详细信息,请阅读this