我有两个这样的矩阵:
gt = [30 40 20 40] and
de = [32 42 20 40; 34 12 20 40; 36 84 20 40]
我想分别计算gt
的{{1}}和3 rows
之间的重叠区域,并且重叠是通过我自己编写的函数计算的。然后我想将结果存储在像
de
你能告诉我如何编写矢量化代码来实现这个目标吗?
谢谢!
答案 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,它可能具有更好的性能(取决于各种因素)
矢量化的关键是逐列执行操作(在这种特定情况下,它可以进一步矢量化,但是我这样写以强调列式操作)