Re: [問題] 矩陣內的值做比對

看板MATLAB作者 (Acoustic)時間16年前 (2008/01/09 16:36), 編輯推噓4(402)
留言6則, 5人參與, 最新討論串1/2 (看更多)
※ 引述《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)

01/09 16:38, , 1F
這... 高阿... 推推
01/09 16:38, 1F

01/09 16:47, , 2F
哇靠~ 一行就解決我的需求,大感謝!!
01/09 16:47, 2F

01/09 17:39, , 3F
我發現我寫錯了,在某些情況下會出錯,還是乖乖用內積好了
01/09 17:39, 3F
※ 編輯: banco 來自: 140.114.27.3 (01/09 18:15) ※ 編輯: banco 來自: 140.114.27.3 (01/09 18:17)

01/09 19:12, , 4F
感激地佩服的五體投地 0rz 這篇被m囉!! 厲害!!
01/09 19:12, 4F

01/10 07:59, , 5F
good
01/10 07:59, 5F

01/10 13:11, , 6F
其實用intersect也蠻短的
01/10 13:11, 6F
文章代碼(AID): #17X8TudP (MATLAB)
文章代碼(AID): #17X8TudP (MATLAB)