【发布时间】:2012-11-08 21:36:27
【问题描述】:
我不知道这是否可能,但让我解释一下我的问题
想象一下我有下面的数组
errors=[e1,e2,e3];
现在我要计算的内容如下
MSE=1/(array_lenght)*[e1^2+e2^2+e3^2];
我可以用一个循环来做这个,但我想知道有没有什么快速的方法。
【问题讨论】:
我不知道这是否可能,但让我解释一下我的问题
想象一下我有下面的数组
errors=[e1,e2,e3];
现在我要计算的内容如下
MSE=1/(array_lenght)*[e1^2+e2^2+e3^2];
我可以用一个循环来做这个,但我想知道有没有什么快速的方法。
【问题讨论】:
这会找到平方误差的平均值:
MSE = mean(errors.^2)
每个元素单独平方,然后求结果向量的均值。
【讨论】:
[1 2 3].^2 == [1 4 9]。如果你把点去掉,Matlab 对整个矩阵求平方,因为它不是一个正方形,所以这不起作用。您还可以使用 .* 进行矩阵的元素乘法。
sum(errors.^2) / numel(errors)
【讨论】:
增权和加法可以一起进行,而不是依次进行:
MSE = (errors*errors') / numel(errors)
【讨论】: