2014-10-10 98 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