作者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