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,列数必须一致,为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:n1
for n=1:nwords
y = 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 ...
- c#语言+计算两个位置的距离,C#计算两个经纬度之间的距离
最近在项目中有一个功能需要计算两个经纬度之间的距离,在网上找了很多,也试了很多,下面的计算方法得出的结果是精度是最高,希望对大家有所帮助. private const double EARTH_RAD ...
- php 2个经纬度之间的距离,php计算两个经纬度之间的距离
/** * @desc 根据两点间的经纬度计算距离 * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return floa ...
- mysql计算两个经纬度之间的距离_mysql计算两个经纬度之间的距离公式
#1.两点距离(1.4142135623730951)select st_distance(point(0,0),point(1,1));select st_distance(point (120.1 ...
- 证据理论(3)—— 计算两个证据体的距离
计算两个证据体的距离的主要思想是:定义一个由幂集 2Ω2^\Omega2Ω 中的元素作为基底的向量空间 S2ΩS_{2^\Omega}S2Ω,一个证据源的基本概率分配函数 (bpa) 就是该证据 ...
- 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# socket 解决粘包,半包
- Spark Client启动原理探索
- 2. vi 简介(2)
- Vue3中获取鼠标在浏览器x轴和y轴的位置
- AN APPROACH OF VECTOR FIELD TEXTURE VISUALIZATION BASED ON FIELD DRIVEN STRENGTH算法实现
- 3万一5万新能源电动汽车,3万内的新能源电动轿车
- IE6升级到IE11兼容性问题和操作手册
- 荣耀XIO升级鸿蒙,距断供不到10天 华为大招来了:不止鸿蒙
- macbook或mac Apple ID 更新提示连接服务器出错
- matlab中利用快速傅里叶变换对股票价格进行频域分析
- 稿定科技内推|稿定让设计更简单,只要你来,稿定就能给你无限可能
- TIA博途WINCC中如何获取当前画面编号并发送给PLC?
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
- 阿里云code登录,阿里云code使用教程
- iOS银联支付(最新)
- OpenCV每日函数 白平衡相关算法
- 【微电网优化】基于matlab粒子群算法求解微网经济调度和环境友好调度优化问题【含Matlab源码 2283期】
- hdu4526威威猫系列故事——拼车记
- Linux服务器使用php发送邮件,sendmail配置
- 风机叶片小规模振动监测数据集--读取测试