作者banco (Acoustic)
看板MATLAB
標題Re: [問題] 矩陣內的值做比對
時間Wed Jan 9 16:36:07 2008
※ 引述《yang0915 (人生路...)》之銘言:
: 假設 BR 矩陣(維度Nx2) =
: 132 115...第一組
: 132 115
: 132 110
: 158 123
: 142 135
: 123 142
: . .
: . .
: . . ...第N組
: 等 等
: 另外一個 H 矩陣(維度3x2) =
: 132 115...第一組
: 132 110...第二組
: 123 142...第三組
: 如果說BR裡面每一組有等於H裡任一組(H組別沒重複),
: 該用什麼技巧去判斷(勿用for loop)
[i,j] = find(BR*(1./H')==2)
i 會回傳 BR 裡符合 H 的 row index
以上是半殘的解法,以下應該才是沒問題的解法(兩者皆可行)
主要是利用兩相等向量在向量空間夾角為0的特性進行演算
下列式子並沒有透過 acos() 轉到角度做判斷 (此時判斷式為 == 0 )
而直接在向量空間判別其值是否為1
[i,j] = find( (BR*H')./((sum(BR.^2,2))*(sum(H.^2,2))').^0.5 == 1 )
[i,j] = find( ((BR*H')./(diag(BR*BR')*diag(H*H')')).^0.5 == 1 )
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.27.3
※ 編輯: banco 來自: 140.114.27.3 (01/09 16:36)
1F:推 youbet:這... 高阿... 推推 01/09 16:38
2F:推 yang0915:哇靠~ 一行就解決我的需求,大感謝!! 01/09 16:47
3F:→ banco:我發現我寫錯了,在某些情況下會出錯,還是乖乖用內積好了 01/09 17:39
※ 編輯: banco 來自: 140.114.27.3 (01/09 18:15)
※ 編輯: banco 來自: 140.114.27.3 (01/09 18:17)
4F:→ yang0915:感激地佩服的五體投地 0rz 這篇被m囉!! 厲害!! 01/09 19:12
5F:推 repmat:good 01/10 07:59
6F:推 newbrain:其實用intersect也蠻短的 01/10 13:11