一.问题描述

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计算两集合间的海明距离相关推荐

  1. 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 ...

  2. 证据理论(3)—— 计算两个证据体的距离

      计算两个证据体的距离的主要思想是:定义一个由幂集 2Ω2^\Omega2Ω 中的元素作为基底的向量空间 S2ΩS_{2^\Omega}S2Ω​,一个证据源的基本概率分配函数 (bpa) 就是该证据 ...

  3. 经纬度计算距离html,js版谷歌地图计算两经纬度坐标点的距离

    球面上两点间大圆劣弧的距离html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. java版谷歌地图计算两经纬度坐标点的距离

    球面上两点间大圆劣弧的距离 public class GoogleMapHelper {private static double EARTH_RADIUS = 6378.137; //地球半径//将 ...

  5. R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离、dist函数计算矩阵中两两元素的曼哈顿距离

    R语言计算曼哈顿距离(Manhattan Distance)实战:计算两个向量的曼哈顿距离.dist函数计算矩阵中两两元素的曼哈顿距离 目录 R语言计算曼哈顿距离(Manhattan Distance ...

  6. sklearn计算两个向量之间的距离

    from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import euc ...

  7. 高德经纬度距离计算php,计算两个经纬度之间的距离 单位(m)

    /** * 计算两个经纬度之间的距离 单位(m) * * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ publ ...

  8. ITK:计算两个索引之间的距离

    ITK:计算两个索引之间的距离 内容提要 输出结果 C++实现代码 内容提要 计算两个索引之间的距离 输出结果 Dist: 1.73205 Dist2: 3 C++实现代码 #include &quo ...

  9. C语言计算两纬线间子午线弧长1/2

    C语言计算两纬线间子午线弧长 1.输入两个纬度,计算纬线间的子午圈弧长. 2.部分源代码 1.输入两个纬度,计算纬线间的子午圈弧长. 输入2,选择克氏椭球.输入纬度1为1°2′3″,纬度2为51°52 ...

最新文章

  1. vue从创建到完整的饿了么(5)v-for,v-bind与计算属性
  2. centos 重装 php5,centos6.6学习笔记:安装PHP5.5
  3. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
  4. 中国城中村改造建设前景规划及投融资模式分析报告2022年版
  5. t test formula
  6. Keras自定义Loss函数
  7. [转载] 百科全说——漆浩:怎样健康饮茶远离误区(11-03-09)
  8. 网络驱动器映射成功但无法实时更新文件需要重新连接_无边界办公——WebDAV文件共享服务构建...
  9. Linux Service管理
  10. BI数据分析师入门项目
  11. 微信小程序之转发功能,自定义转发标题文字和图片
  12. Linux高级命令(一)
  13. PAT 1082 射击比赛 python
  14. Ubuntu小技巧14--sed命令详解
  15. A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读
  16. 王绍伟:你不是非得和别人一样---转载
  17. ArcGIS教程 - 7 空间数据编辑
  18. 快速上手云原生安全平台 NeuVector
  19. Cherno C++ P41 C++的this关键字
  20. Jackson JsonGenerator类

热门文章

  1. jquery sortable简述
  2. VS2005 和 SQL Server 2005 安装顺序不同会发生什么?
  3. kvm虚拟化学习笔记(十一)之kvm虚拟机扩展磁盘空间
  4. 望城区构建摩托车电动车防盗系统 打造物联网平安智慧城市
  5. SQL 基础之索引、闪回、临时表(十八)
  6. ubuntu14.04 server安装vncserver
  7. innodb表空间结构
  8. linux zip 命令详解
  9. wpf采用Xps实现文档显示、套打功能
  10. Linux基础—screen命令