我有两个矩阵是这样的:如何写矢量码为2矩阵
gt = [30 40 20 40] and
de = [32 42 20 40; 34 12 20 40; 36 84 20 40]
我想要计算gt
和de
分别3 rows
和重叠之间的重叠区域是由我写自己的函数来计算。然后我想结果存储在像
result = [result1; result2; result3].
一个新的列向量,你能告诉我怎么写一个量化代码来实现这一目标?
谢谢!
我有两个矩阵是这样的:如何写矢量码为2矩阵
gt = [30 40 20 40] and
de = [32 42 20 40; 34 12 20 40; 36 84 20 40]
我想要计算gt
和de
分别3 rows
和重叠之间的重叠区域是由我写自己的函数来计算。然后我想结果存储在像
result = [result1; result2; result3].
一个新的列向量,你能告诉我怎么写一个量化代码来实现这一目标?
谢谢!
矢量化只能在重叠函数内发生。你可以在外面做的唯一事情就是使用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,可能有更好的表现(这取决于多种因素)
矢量化的关键在于按列执行操作(在这个特定情况下,它可以进一步向量化,但是我正在通过这种方式来强调列操作)
非常感谢 – gladys0313 2014-10-20 06:27:24
你如何定义重叠? – 2014-10-10 13:06:31
答案在很大程度上取决于你如何定义重叠。所以你应该发布该功能 – 2014-10-10 13:53:30
哦,是的,我忘了提及重叠:函数val = iou(gt,de) iarea = rectint(gt,de); val = iarea /(gt(3)* gt(4)+ de(3)* de(4) - iarea); 结束 – gladys0313 2014-10-11 13:04:36