【问题标题】:Sum of squared differences平方差之和
【发布时间】:2015-03-13 16:55:14
【问题描述】:

我正在尝试编写一个函数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 ) 是计算平方差和的正确方法是否正确?如果是这样,为什么我的功能不能正常工作?

【问题讨论】:

  • z = sum( (a(:,1) - b(:,1)).^ 2 );?
  • 或z = sum( (a - b).^2 )
  • 一些替代方案:norm(a-b)^2, pdist2(a(:).',b(:).')^2

标签: matlab


【解决方案1】:

根据distributive property in mathematics,您忘记了括号。 我用(:) 稍微缩短了你的代码 - 在任何情况下都会创建一个列向量,这样你就不需要关心输入向量的方向。:

z = sum( (a(:) - b(:)).^2 ) 

如果您有神经网络工具箱,您还可以:

z = sumsqr( a(:) - b(:) )

【讨论】:

  • 感谢您的快速回答,真不敢相信我忘记了这么简单的事情!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多