2014-10-10 108 views
0

我有两个矩阵是这样的:如何写矢量码为2矩阵

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

我想要计算gtde分别3 rows和重叠之间的重叠区域是由我写自己的函数来计算。然后我想结果存储在像

result = [result1; result2; result3]. 

一个新的列向量,你能告诉我怎么写一个量化代码来实现这一目标?

谢谢!

+1

你如何定义重叠? – 2014-10-10 13:06:31

+1

答案在很大程度上取决于你如何定义重叠。所以你应该发布该功能 – 2014-10-10 13:53:30

+0

哦,是的,我忘了提及重叠:函数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

回答

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,可能有更好的表现(这取决于多种因素)

矢量化的关键在于按列执行操作(在这个特定情况下,它可以进一步向量化,但是我正在通过这种方式来强调列操作)

+0

非常感谢 – gladys0313 2014-10-20 06:27:24