我有兩個矩陣是這樣的:如何寫矢量碼爲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