回答
代碼
%// Concatenate all vectors to form a 2D array
V = cat(2,v1(:),v2(:),v3(:),v4(:),v5(:))
N = size(V,2) %// number of vectors
%// Find all IDs of all combinations as x,y
[y,x] = find(bsxfun(@gt,[1:N]',[1:N])) %//'
%// OR [y,x] = find(tril(true(size(V,2)),-1))
%// Use matrix indxeing to collect vector data for all combinations with those
%// x-y IDs from V. Then, perform subtractions across them for final output
diff_array = V(:,x) - V(:,y)
有關代碼
bsxfun
與find
幾個點會讓我們的ID形成配對組合。- 我們使用這些ID來索引到2D連接數組中,並在它們之間執行減法以獲得最終輸出。
獎金的東西
如果你仔細觀察到在那裏找到的所有組合的IDs
的部分,即基本nchoosek(1:..,2)
。
所以,基本上可以有替代nchoosek(1:N,2)
爲:
[Y,X] = find(bsxfun(@gt,[1:N]',[1:N]))
[y,x] = find(tril(true(N),-1))
與[X Y]
形成的配對組合,並可能是有趣的比較基準!
使用bsxfun
:
clear
clc
%// Sample vectors.
v1 = [1 2];
v2 = [10 20];
v3 = [0 0];
Out = bsxfun(@minus,[v1 v2 v3], [v1 v2 v3].')
Out =
0 1 9 19 -1 -1
-1 0 8 18 -2 -2
-9 -8 0 10 -10 -10
-19 -18 -10 0 -20 -20
1 2 10 20 0 0
1 2 10 20 0 0
推理:每個差計算從第一矢量的,直到最後一個矢量的第二元素的第一元素開始。第一列包含第一個向量的第一個元素的所有差異,即(1 -1),(1-2),(1-10),(1-20),(1-0) ,(1-0)。
然後第二列,同樣的事情,但這次與2:(2 - 1),(2 - 2),(2 - 10),等等。
對不起,如果我的解釋不清楚哈哈我不知道在英文的正確的條款。請詢問更多細節。
真棒,最後!只是好奇,OP所說的「配對」會被照顧嗎? – Divakar 2015-02-09 20:13:03
哦拍是的配對;我誤解了這個問題!我認爲@knedlsepp是正確的。 – 2015-02-09 20:36:59
只需使用nchoosek
首先生成組合,然後利用它們來索引到你的行向量的陣列:
測試用例:
numVectors = 3;
dim = 5;
Vs = rand(numVectors, dim);
實際計算:
combs = nchoosek(1:size(Vs,1), 2);
differences = Vs(combs(:,1),:) - Vs(combs(:,2),:);
上面創建了3維的5維隨機行矢量。所以在你的情況下,你可能想用Vs = [v1; v2; v3];
代替隨機矩陣的創建,如果你的ve矩陣是行向量;或者如果您的數據是列向量,則使用Vs = [v1, v2, v3].';
轉置載體。
- 1. 差異之間的三個
- 2. 可能重複值的兩個列表之間的Python差異
- 3. 2個時間戳之間的差異
- 4. jQuery的差異獲得兩個物體之間,物體
- 5. 的Oracle SQL - 兩個日期之間的差異爲多個ID
- 6. Sql:每行兩列之間的差異
- 7. 需要計算每個empid的兩個時間戳之間的差異
- 8. 添加1 7差異的每多個
- 9. 發現相同類型的兩個實體之間的差異
- 10. 兩個月之間的月份差異
- 11. 找到兩個值之間的差異?
- 12. Grails - 兩個日期之間的差異
- 13. divs之間的2個像素差異
- 14. VB - 兩個日期之間的差異
- 15. 兩個f.select選項之間的差異
- 16. 兩個日期之間的差異
- 17. Javascript - 兩個日期之間的差異
- 18. SQL - 兩個查詢之間的差異
- 19. 兩個數組之間的差異值
- 20. 兩個表之間的日期差異
- 21. 兩個日期之間的差異
- 22. 兩個日期之間的差異python
- 23. 兩個日期之間的Ruby差異
- 24. C#兩個列表之間的差異
- 25. 兩個Android API之間的差異
- 26. 2個定時器之間的差異
- 27. 兩個密度圖之間的差異
- 28. 兩個日期()之間的JavaScript差異
- 29. 繪製兩個ecdf之間的差異()
- 30. 獲得兩個表之間的差異?
我沒有combvec在我的matlab – aaa 2015-02-09 19:58:49