Matlab计算两集合间的海明距离
一.问题描述
B1[1 2 3
4 5 6
7 8 9]
B2[12 13 14
21 31 41
51 1 1
81 1 1]
两个十进制矩阵,行数不一样,分别是n1和n2,列数必须一致,为nwords,输出的矩阵Dh是[n1,n2],这和求两句真的欧氏距离一样的。
输出[1 1] = 1和12海明+2和13海明 + 3和14海明,[1 2] = 1和21 + 2和31 + 3和41,也就是说[i j]是B1第i行和B2第j行的海明距离。
二.问题分析
1和12 21 51 81分别求海明距离,防御a(一个航向量);2和13 31 1 1求海明距离,放于b;3和14 41 1 1 防御c;然后a+b+c就得到了,B1中第一行和B2中各行的海明距离。
为了加快运算,可以打表,两个nwords=8的数异或后还是0到255(bitxor异或得到的是10禁止数),所以吧0到255共256个数每个数包含几个1(就是海明距离)存在一个矩阵bit_in_char中。
三.实现
function Dh=hammingDist(B1, B2)
%
% Compute hamming distance between two sets of samples (B1, B2)
%
% Dh=hammingDist(B1, B2);
%
% Input
% B1, B2: compact bit vectors. Each datapoint is one row.
% size(B1) = [ndatapoints1, nwords]
% size(B2) = [ndatapoints2, nwords]
% It is faster if ndatapoints1 < ndatapoints2
%
% Output
% Dh = hamming distance.
% size(Dh) = [ndatapoints1, ndatapoints2]% example query
% Dhamm = hammingDist(B2, B1);
% this will give the same result than:
% Dhamm = distMat(U2>0, U1>0).^2;
% the size of the distance matrix is:
% size(Dhamm) = [Ntest x Ntraining]% loop-up table:
bit_in_char = uint16([...0 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4 1 2 2 3 2 3 ...3 4 2 3 3 4 3 4 4 5 1 2 2 3 2 3 3 4 2 3 3 4 ...3 4 4 5 2 3 3 4 3 4 4 5 3 4 4 5 4 5 5 6 1 2 ...2 3 2 3 3 4 2 3 3 4 3 4 4 5 2 3 3 4 3 4 4 5 ...3 4 4 5 4 5 5 6 2 3 3 4 3 4 4 5 3 4 4 5 4 5 ...5 6 3 4 4 5 4 5 5 6 4 5 5 6 5 6 6 7 1 2 2 3 ...2 3 3 4 2 3 3 4 3 4 4 5 2 3 3 4 3 4 4 5 3 4 ...4 5 4 5 5 6 2 3 3 4 3 4 4 5 3 4 4 5 4 5 5 6 ...3 4 4 5 4 5 5 6 4 5 5 6 5 6 6 7 2 3 3 4 3 4 ...4 5 3 4 4 5 4 5 5 6 3 4 4 5 4 5 5 6 4 5 5 6 ...5 6 6 7 3 4 4 5 4 5 5 6 4 5 5 6 5 6 6 7 4 5 ...5 6 5 6 6 7 5 6 6 7 6 7 7 8]);n1 = size(B1,1);
[n2, nwords] = size(B2);Dh = zeros([n1 n2], 'uint16');
for j = 1:n1for n=1:nwordsy = bitxor(B1(j,n),B2(:,n));Dh(j,:) = Dh(j,:) + bit_in_char(y+1);end
end
Matlab计算两集合间的海明距离相关推荐
- matlab 韩明距离_Matlab计算两集合间的海明距离
一.问题描述 B1[1 2 3 4 5 6 7 8 9] B2[12 13 14 21 31 41 51 1 1 81 1 1] 两个十进制矩阵,行数不一样,分别是n1和n2,列数必须一致,为nwo ...
- 证据理论(3)—— 计算两个证据体的距离
计算两个证据体的距离的主要思想是:定义一个由幂集 2Ω2^\Omega2Ω 中的元素作为基底的向量空间 S2ΩS_{2^\Omega}S2Ω,一个证据源的基本概率分配函数 (bpa) 就是该证据 ...
- 经纬度计算距离html,js版谷歌地图计算两经纬度坐标点的距离
球面上两点间大圆劣弧的距离html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java版谷歌地图计算两经纬度坐标点的距离
球面上两点间大圆劣弧的距离 public class GoogleMapHelper {private static double EARTH_RADIUS = 6378.137; //地球半径//将 ...
- R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离
R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...
- sklearn计算两个向量之间的距离
from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import euc ...
- 高德经纬度距离计算php,计算两个经纬度之间的距离 单位(m)
/** * 计算两个经纬度之间的距离 单位(m) * * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ publ ...
- ITK:计算两个索引之间的距离
ITK:计算两个索引之间的距离 内容提要 输出结果 C++实现代码 内容提要 计算两个索引之间的距离 输出结果 Dist: 1.73205 Dist2: 3 C++实现代码 #include &quo ...
- C语言计算两纬线间子午线弧长1/2
C语言计算两纬线间子午线弧长 1.输入两个纬度,计算纬线间的子午圈弧长. 2.部分源代码 1.输入两个纬度,计算纬线间的子午圈弧长. 输入2,选择克氏椭球.输入纬度1为1°2′3″,纬度2为51°52 ...
最新文章
- vue从创建到完整的饿了么(5)v-for,v-bind与计算属性
- centos 重装 php5,centos6.6学习笔记:安装PHP5.5
- 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
- 中国城中村改造建设前景规划及投融资模式分析报告2022年版
- t test formula
- Keras自定义Loss函数
- [转载] 百科全说——漆浩:怎样健康饮茶远离误区(11-03-09)
- 网络驱动器映射成功但无法实时更新文件需要重新连接_无边界办公——WebDAV文件共享服务构建...
- Linux Service管理
- BI数据分析师入门项目
- 微信小程序之转发功能,自定义转发标题文字和图片
- Linux高级命令(一)
- PAT 1082 射击比赛 python
- Ubuntu小技巧14--sed命令详解
- A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读
- 王绍伟:你不是非得和别人一样---转载
- ArcGIS教程 - 7 空间数据编辑
- 快速上手云原生安全平台 NeuVector
- Cherno C++ P41 C++的this关键字
- Jackson JsonGenerator类