我正在尝试编写一个函数SSD
,它需要两个 m x 1 向量并计算平方和差异。
我正在用矢量测试我的SSD功能:
a = [0.5, -0.2, 1.7]';
b = [0.2, 0.9, 0.45]';
我希望得到答案2.862500
,但我得到的结果是0.947500
我的功能如下:
function [ z ] = SSD( a, b )
z = sum( a(:,1) - b(:,1).^ 2 );
end
我是否正确地认为Z = sum( (Ai - Bi).^ 2 )
是计算平方差之和的正确方法?如果是这样,为什么我的功能无法正常工作?
答案 0 :(得分:3)
根据distributive property in mathematics你忘了括号。
我使用(:)
缩短了您的代码 - 在任何情况下都会创建一个列向量,这样您就不需要关心输入向量的方向了。
z = sum( (a(:) - b(:)).^2 )
如果你有神经网络工具箱,你也可以这样做:
z = sumsqr( a(:) - b(:) )