作者FHTsai (.)
看板MATLAB
標題Re: [問題] 矩陣內的值做比對
時間Wed Jan 9 22:59:45 2008
※ 引述《banco (Acoustic)》之銘言:
: ※ 引述《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 )
很Nice的演算法
這裡另提供一個matlab內的函數:
ismember
範例:
idx = find( ismember( BR , H , 'rows' ) )
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.229.74.146
1F:推 banco:fantastic~ 01/10 00:09
2F:→ repmat:good 01/10 08:00