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方法对面进行翻转,需要注意矩阵的转置。

  • 相关阅读:
    Linux下常用软件安装(tar bz gz等压缩包的压缩和解压)
    《那些年啊,那些事——一个程序员的奋斗史》五
    IT人士 不能一辈子靠技术生存
    十八年开发经历小结
    《那些年啊,那些事——一个程序员的奋斗史》一
    软件工程及软件项目开发流程
    《那些年啊,那些事——一个程序员的奋斗史》三
    AJAX技术解读
    全程追踪入侵JSP网站服务器
    《C语言程序设计》教学的几点体会
  • 原文地址:https://www.cnblogs.com/sipin/p/4361967.html
Copyright © 2011-2022 走看看