zoukankan      html  css  js  c++  java
  • [工具]toolbox_graph_isomap

    Isomap:Isomap是一种非线性降维的方法。同MDS一样,Isomap的主要方法为,先计算顶点间的测地距离(如果是1-ring最近邻,则为欧式距离),然后根据测地距离的邻接矩阵变换到欧式距离上,得到的输出结果即为canonical forms。关于算法的介绍及算法流程可参考wiki:http://en.wikipedia.org/wiki/Isomap

    另附Stanford大学的Isomap主页:http://isomap.stanford.edu/

    下面主要分析toolbox_graph中isomap的使用及原理

    function xy = Isomap(X,ndims,options); 

    或  xy = isomap(D,ndims,options); 

      输入参数:X——D*N的矩阵,D为维度,N为顶点数目

        D——距离矩阵,记录两顶点间的距离。可以是局部距离矩阵,当无连接是值为Inf;也可以是全局距离矩阵,也就是两顶点间的测地距离矩阵。

        ndims——维度

        options——ndims:输出的维度

            distance_mode:局部距离矩阵对应‘local’;全局距离矩阵对应‘global’

            nn_epsilon:通过阈值计算最近邻时使用

            nn_nbr:设定固定的最近邻数目

       输出:xy——N*D的矩阵,得到的isomap之后的顶点数据。可以write_off方法写进文件在meshlab中查看。

    相关测试代码:

    [vertex,face] = read_off('test.off');

    A = triangulation2adjacency(face,vertex);

    W = build_euclidean_weight_matrix(A,vertex);

    options.distance_mode = 'local';
    xy = isomap(W,3,options);

    write_off('F:MrJinShapeRetrievalCM-BOF-source code1Source_codemy_code oolbox_graphmy_test est_isomap.off',xy',face);

    Isomap代码中 用到了compute_distance_graph,用于计算从全局的距离矩阵。在compute_distance_graph中,调用了preform_dijkstra计算最短路径。

    PS:为使结果更加便于观察,可以使用reverse_orientation方法对面进行翻转,需要注意矩阵的转置。

  • 相关阅读:
    【其他】UTF-8带签名与不带签名
    【Python】Python 过滤列表
    【EF】EF扩展库(批量操作)
    【python】用 sqlacodegen 将存在的数据库表 转化成model.py
    【python】使用枚举类
    【python】Python: Enum枚举的实现
    【python】python sqlalchemy core
    【python】python字符串前面加u,r,b的含义
    【EF】Entity Framework Core 2.0 特性介绍和使用指南
    Asp.Net 之 前台绑定常用总结
  • 原文地址:https://www.cnblogs.com/sipin/p/4361967.html
Copyright © 2011-2022 走看看