精华内容
下载资源
问答
  • 计算两个矩阵的列之间具有指数 p 的闵可夫斯基距离矩阵在行和列维度上的大小可能不同。 阅读函数标题以获取示例和用户指南。
  • 好消息是 bsxfun 允许我们高效且准确地计算距离。 3. 很多时候我们希望计算一个inter-point,但我们只需要整个矩阵的一些子集。 那么,对于我们集合中的每个点,只列出一个最近邻的列表,或者只列出超出某个限制的...
  • Matlab计算矩阵距离

    千次阅读 2015-05-25 00:37:00
     感觉知识结构不完善:上学期看论文,发现类间离散度矩阵和类内离散度矩阵,然后百度,找不到,现在学模式识别,见了,发现是数学公司,不过老师不讲........ 一.问题来源  今天有个意想不到的收货,下午讲课的...

      夜深人静时分,宿舍就我自己,只有蚊子陪伴着我,我慢慢码下这段文字............

      感觉知识结构不完善:上学期看论文,发现类间离散度矩阵和类内离散度矩阵,然后百度,找不到,现在学模式识别,见了,发现是数学公司,不过老师不讲........

    一.问题来源

      今天有个意想不到的收货,下午讲课的时候遇到一个人主动加我,来自南京信息工程大学的某X(处于隐私保护,未经李某X同意,笔者不敢公开其信息),下面是他的话:很久没去博客园了。。。。现在只有matlab版本的一些hash算法;我现在主要就是在研究基于hash的图像检索,如果你有需要的话,可以给你一些资料。

      我们俩交流了很多.......从实验室,到研究课题,到LOL,笔者深深为他渊博的学识和不俗的谈吐所打动,恩恩,遇到志同道合的人挺不容易的........最重要的是感谢他的开源精神,给我了很多我急需的资料和代码。在此,也感谢博客园提供的这个平台,让我们在这茫茫人海中有了相知相识的机会,哈哈,这其实就是局部敏感哈希的思想——在茫茫人海中发现相似的你啊,爱你们.............

      该篇博客来自于某X分享的代码,我产生了写此篇博文的灵感。

    二.问题解析

      实现矩阵间任意行之间的欧式距离。通俗地说如下:两个点的距离知道吧,矩阵是类似的原理,求X1和X2矩阵的距离,假设得到的结果矩阵为C,那么C的下标ij表示的是X1中的第i行和X2中的第j行的距离。

    2.1 方法1

    if nargin == 2
        P1 = double(P1);
        P2 = double(P2);
        
        X1=repmat(sum(P1.^2,2),[1 size(P2,1)]);%sum(x,2):横向相加,得到列向量;sum(x),默认为竖向相加。
        X2=repmat(sum(P2.^2,2),[1 size(P1,1)]);
        R=P1*P2';
        D=real(sqrt(X1+X2'-2*R));
    else
        P1 = double(P1);
    
        % each vector is one row
        X1=repmat(sum(P1.^2,2),[1 size(P1,1)]);
        R=P1*P1';
        D=X1+X1'-2*R;
        D = real(sqrt(D));
    end
    

      加入p1:100*256,p2:5900*256,那么x1:100*5900,x25900*100,R:5900*100。

      repmat表示复制和平铺,sum(P1.^2,2)就是每个元素先平方,然后每行求和,就变成一个列向量;求矩阵X1和X2的距离:类似于(A-B)^2 = A^2+B^2-2AB然后开根号;matlab里面调用repmat(a,m,n)命令:三个参数的含义:a:要被复制的矩阵或者向量,m复制成多少行,n复制成多少列。就是把a复制成m行,n列。[1 size(P2,1)]:这个就是将sum(P1.^2,2)得到的列向量复制一行,size(p2,1)列。

      不计算距离如何知道样本是不是紧邻呀,这个就是欧式距离度量紧邻与否。紧邻与否可以通过语意度量,也可以通过距离度量,欧式距就是其中一种。

    2.2 方法2

      写到上面,我想起了王老师写的k-means(链接),那时候第一次接触repmat函数。

    %repmat 即 Replicate Matrix ,复制和平铺矩阵,是 MATLAB 里面的一个函数。
    %B = repmat(A,m,n)将矩阵 A 复制 m×n 块,即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成。B 的维数是 [size(A,1)*m, size(A,2)*n] 。
    %点乘方a.^b,矩阵a中每个元素按b中对应元素乘方或者b是常数
    %sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。 而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量。
     dist = sum((repmat(x(i,:),k,1)-nc).^2,2); 
    

    2.3 方法3

      直接饮用小伙伴们的问题。

      比如说,A阵是20*10,B阵是30*10的,A阵的20个行向量和B阵中的30个行向量计算欧式距,得到20*30的欧式距离矩阵C这个应该怎么写?
      我每次写出来的C阵每行都是相同的 简直郁闷死了,请教大牛~

    clear all
    %你可以定义自己的A,B矩阵,下面的矩阵仅作为例子
    A=zeros(20,10);
    B=ones(30,10);
    %Dist距离矩阵
    Dist=zeros(20,30);
    for i=1:20
        for j=1:30
            Dist(i,j)=norm(A(i,:)-B(j,:));
        end
    end
    

    2.4 方法4

    Dist = sqrt(A.^2*ones(size(B'))+ones(size(A))*(B').^2-2*A*B')
    

      这个和方法1,异曲同工。而且,据传,此方法较快。

    2.5 方法五

     

    for i = 1:size(X,1)
        Distance(i,:) = diag((repmat(X(i,:),n,1)-X)*(repmat(X(i,:),n,1)-X)');
    end

     

    三.结束语

      看了这么久的LSH,苦于没有合适的代码,很痛苦,给国内的某些大牛写信,从来没收到过回信,给国外的大牛写信基本当天就会回信..........这算是国内外学者的精神风貌不同吧........正式这个原因,我慢慢想着摒弃开源,恩恩,感谢某X,让我有了继续开源的精神动力,人生路上就是需要这类人的陪伴.....从长远来源,笔者认为开源更有意义,也更能体现自己的价值.......每次我说我不懂,别人说我谦虚,其实我是真的不懂.....知道个大概,对面其实是一种误导.......不过有时候也挺佩服自己能坚持下来...........笔者的目标是——互联网行业布道者,欢迎志同道合的人和我联系............晚安~~~

      参考文献:IloveMatlab社区,百度知道,某X语录。

    展开全文
  • G = bdist(A,B,b) 计算距离 A 和 B,从具有参数 b 的功率势得出 参数 b 是一个小于 1/n 的非零数,其中 n 是矩阵的维数。 对于任何一对矩阵,b 都有一些允许的值。 如果 b 不在这些值中,则发送警告。 [1] N. ...
  • matlab计算距离矩阵

    万次阅读 2011-03-30 11:26:00
    如何用matlab自带的函数计算距离矩阵?请看本文。

         matlab中自带的计算距离矩阵的函数有两个pdist和pdist2。前者计算一个向量自身的距离矩阵,后者计算两个向量之间的距离矩阵。基本调用形式如下:

                   D = pdist(X)

                   D = pdist2(X,Y)

     

       这两个函数都提供多种距离度量形式,非常方便,还可以调用自己编写的距离函数。

     

       需要注意的是:pdist2返回是n*n的距离矩阵,pdist则返回距离矩阵的下三角串联形式。

    展开全文
  • 计算一组或两组点的距离矩阵。 (返回所有点对之间的点对点距离,类似于统计工具箱中的 PDIST,对于那些没有它的人) 描述:计算点之间的成对距离矩阵A 和 B,使用 {euclidean,cityblock,chessboard} 方法之一输入:...
  • 该程序计算每对可能的点的欧几里得距离,其坐标以矩阵中的行的形式给出。 由于其有限的计算成本,它对于基于距离的分类器特别有用。 该程序可以很容易地适应计算曼哈顿距离或任何其他距离度量。
  • matlab计算空间权重矩阵(地理距离和经济地理距离),distance函数的应用。

    如需转载,请注明来源,谢谢合作。
    若本文对您有一点点的帮助,欢迎点赞、评论和关注。您的鼓励和支持是我继续学习和分享的动力。
    可用以下数据进行验证链接:https://pan.baidu.com/s/10gWu-Dx6vmcJCVujkaAA4g 密码:imh0
    已共享链接和密码,不用再留邮箱了。

    计算地理距离空间权重矩阵

    %主要应用了matlab的distance函数。
    %计算30个省区市行标准化后的地理空间权重矩阵 W。要计算别的,更改以下的30为对应数字即可
    %{
    选中下面两行,按F9快捷键新建纬度x和经度y矩阵
    x=[] %x为纬度,按列粘贴
    y=[] %y为经度,按列粘贴
    %}
    A=[x y]  
    for i=1:30
        for j=1:30
            B(i,j)=distance(A(i,1),A(i,2),A(j,1),A(j,2)); %根据经纬度计算地点间的距离,主要应用distance函数,详细可以百度
        end
    end
    %B算出来的单位是度。换算成距离的话,需要再乘以Pi/180再乘以6378.2,单位为千米。(此处将地球当做一个球体,半径为6378.2千米)
    C=B*pi/180*6378.2  %C即为地点间地理距离矩阵,单位为千米
    D=1./C  %D的元素为距离的倒数。即距离数值越小,倒数后构成的权重越大;反之亦然。
    D(D==inf)=0  %当矩阵元素为无限大时,将其变为0
    %以下行标准化
    E=sum(D,2)  %计算各行之和
    F=repmat(E,1,30)  %主要应用repmat函数
    W=D./F   %W即为行标准化后的地理距离空间权重矩阵
    
    

    计算经济地理距离空间权重矩阵

    %以下为计算经济地理距离空间权重矩阵 Wes的matlab程序。
    %主要思想是:通过上一个matlab程序获得行标准化后的地理距离W,现在获得行标准化后的人均实际GDP经济距离矩阵,再将二者相乘再行标准化。
    %与一些文章的细节处理不大一样。但我觉得本处理更合理些,因为多了几次行标准化,避免了地理距离和经济距离量级不一样造成的较大影响。
    %注意:地理距离不变,但经济距离(很多人使用人均实际GDP的差额表示)是每年都改变的,所以有几年就有几个Wes
    %{
    选中下面一行,按F9(F9是matlab运行选中程序的快捷键),新建某年(例2003年)30个省(市,区)的人均实际GDPx列向量
    x=[] %将2003年30个省(市,区)的人均实际GDP粘贴入x
    W=[] %将上一个matlab计算的地理距离空间权重矩阵粘贴入W
    %}
    y=x %y与x是一样的,这样做是为了后面计算经济距离
    for i=1:30
        for j=1:30
            A(i,j)=x(i,1)-y(j,1);  %A中的元素即为2003年对应两个省区市之间人均实际GDP的差值
        end
    end
    B=abs(A)  %取A元素的绝对值。因为空间权重矩阵考虑的是距离,不是差值大小
    C=1./B
    C(C==inf)=0
    %以下行标准化
    D=sum(C,2)  %计算各行之和
    E=repmat(D,1,30)  %主要应用repmat函数
    We=C./E   %We即为行标准化后的经济距离权重矩阵
    Wes1=W.*We  %地理距离倒数点乘经济距离倒数
    %以下再行标准化
    F=sum(Wes1,2)
    G=repmat(F,1,30)
    Wes=Wes1./G  
    
    展开全文
  • 假设向量为A,矩阵为B,计算的前提是向量的列数和矩阵的列数相同 假设矩阵B的行数为N行,则先使用repmat函数将A向量扩展为同型矩阵再进行计算计算代码如下: distance = sqrt(sum((B-repmat(A,N,1)).^2,2)); ...

    假设向量为A,矩阵为B,计算的前提是向量的列数和矩阵的列数相同
    假设矩阵B的行数为N行,则先使用repmat函数将A向量扩展为同型矩阵再进行计算,计算代码如下:
    distance = sqrt(sum((B-repmat(A,N,1)).^2,2));

    展开全文
  • %可以直接复制到matlab中运行 A = [ 0.556962683635638 0.349974807420603 0.305115372110084 0.000002523750663 0.222371895146779 0.081418757404744 1.000000000000000 0.593799304585264 0.999999665282946 0....
  • 实验四Floyd 算法 一实验目的 利用MATLAB 实现Floyd 算法可对输入的邻接距离矩阵计算图中任 意两点间的最短距离矩阵和路由矩阵且能查询任意两点间的最短距离 和路由 二实验原理 Floyd 算法适用于求解网络中的任意两...
  • matlab开发-近邻空间权重矩阵。使用x,y坐标生成几种最近邻空间权重矩阵之一。
  • Matlab绘制邻接矩阵

    2013-04-29 10:54:38
    Matlab绘制邻接矩阵 Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离,对于每一个节点X...
  • 欢迎关注工科男的Maltab学习日志,采用...——工科男MATLAB符号计算1 符号计算基础1.1符号运算1.2 符号对象1.3 符号表达式中变量的确定2 符号导数及其应用2.1函数的极限2.2 符号函数求导及其应用3 符号积分4 级数...
  • 阶乘:n! factorial(n); 或者gamma(n) 组合问题: 组合数是指从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合...说明:用 ‘metric’指定的方法计算 X 数据矩阵中对象之间的距
  • MATLAB计算矩阵间的欧式距离(不用循环!)

    万次阅读 多人点赞 2016-05-28 12:59:55
    题目描述:从一个NxM的矩阵C中找出与1xM的矩阵P欧氏距离最小的某一行row,要求不能用循环!!! 输入:矩阵C(NxM)、矩阵P(1xM) 输出:row 解题思路: 程序: function[row]=matchest(C,P) [N,M...
  • 已知图像img.jpg中棋盘格最外围的四个角点(以红色标识)的平面世界坐标(x,y).估计两坐标系之间的单应...2.计算棋盘格标定板的左侧边界长度,即图中两绿色角点在世界坐标系中的距离d(cm)。 要求输出矩阵H和距离d。
  • 此代码使用 RANSAC 框架中的五点算法来计算基本矩阵的稳健初始估计。 该估计随后通过使用六个参数(3 个用于 Rodrigues 向量,3 个用于平移向量)参数化基本矩阵并使用 Levenberg-Marquardt 算法最小化 RANSAC 内点...
  • 这是一个非常简单的函数,用于从两个向量集之间计算向量集内的成对欧几里得距离。 虽然简单,但非常有用。... D=distanceMatrix(X),其中X为N*d数据,D为N*N距离矩阵。 或 D=distanceMatrix2(X,Y)。
  • 'z=mydist(w,p)' 计算两个向量 w:SxR 和 p:RxQ 之间的欧氏距离,并返回 z:SxQ,w 的行和 p 的列之间的距离。 此函数与 Matlab 'dist(w,p)' 的作用相同,但计算所需的内存要少得多。 它可以帮助克服神经网络中较大...
  • 距离上一篇文章的发布有一个多月了。现在接上,来分享一些MATLAB软件的内容,同时自己也来更加深入地学习这个软件。01前言网上的学习视频很多了,我就从matlab官网的文档(2019a版)入手,对某些点进行选择性的介绍。...
  • 协方差矩阵的概念及matlab计算

    千次阅读 2019-03-20 21:23:05
    今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~本文我将用自认为循序渐进的方式谈谈协方差...
  • MATLAB 求两个矩阵或者向量的欧氏距离 : 定义两个矩阵或者向量分别为a,b,则定义c=(a-b).^2,所求距离d=sqrt(sum(c(????))。
  • 实用标准文案 实验四 Floyd 算法 一实验目的 利用 MATLAB 实现 Floyd 算法可对输入的邻接距离矩阵计算图中任意 两点间的最短距离矩阵和路由矩阵且能查询任意两点间的最短距离和路由 二实验原理 Floyd 算法适用于求解...
  • 两个矩阵间元素(向量)
  • 实验四Floyd 算法 一实验 目的 利用MAT LAB 实现Floyd 算法可对输入的邻接距离矩阵计算图中任 意两点间的最短距离矩阵和路由矩阵且能查询任意两点间的最短距离 和路由 二实验原理 Floyd 算法适用于求解网络中的任意...
  • 计算两两地址之间的距离,数据保存在矩阵内。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,446
精华内容 5,378
关键字:

matlab计算距离矩阵

matlab 订阅