如何编写2矩阵的矢量化代码

时间:2014-10-10 12:33:46

标签: matlab

我有两个这样的矩阵:

gt = [30 40 20 40] and
de = [32 42 20 40; 34 12 20 40; 36 84 20 40]

我想分别计算gt的{​​{1}}和3 rows之间的重叠区域,并且重叠是通过我自己编写的函数计算的。然后我想将结果存储在像

这样的新列向量中
de

你能告诉我如何编写矢量化代码来实现这个目标吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

矢量化只能在重叠函数内部发生。你可以做的唯一事情就是使用repmat或bsxfun复制vector gt。您没有解释重叠功能的工作原理。我想它与坐标有关,所以我举一个欧几里德距离的例子,它的工作方式类似。

如果你必须计算点gt = [1 2]和点de = [5 6; 10 12; 0 -1]你要定义

 function result = dist(x, y)
  result = sum(sqrt((x(:,1) - y(:,1)).^2 + (x(:,2) - y(:,2)).^2), 2)

你会称之为复制gt矢量

 dist(de, repmat(gt, 3, 1))

或者,您可以使用bsxfun而不是repmat,它可能具有更好的性能(取决于各种因素)

矢量化的关键是逐列执行操作(在这种特定情况下,它可以进一步矢量化,但是我这样写以强调列式操作)