高效的计算Laplacian 矩阵

直接上代码,可以直接调用:

function L1 = CP_Laplacian( M )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
% number of vertices (size of matrix)
nverts = size(M.vertices,1);

% assume manifold and faces oriented uniformly
edges = [M.faces(:,[1,2]); M.faces(:,[2,3]); M.faces(:,[3,1])];

% extract vertices from matrix
v1Idxs = edges(:,1);
v2Idxs = edges(:,2);
v1s = M.vertices(v1Idxs,:);
v2s = M.vertices(v2Idxs,:);

% compute edge lengths and weights
eps = 1e-8;
edgel = sqrt( sum( (v1s-v2s).^2, 2 ) );
edgew = 1 ./ (eps + edgel );

% construct sparse matrix
nnzeros = size(edges,1) / 2;
L1 = sparse( v1Idxs, v2Idxs, edgew, nverts, nverts );

% compute diagonal by summing column-major (faster)
D = -full( sum( L1,1 ) )‘;

% insert D in 0-diagonal of L1
L1 = spdiags(D,0,L1);

end
时间: 12-20

高效的计算Laplacian 矩阵的相关文章

Laplace算子和Laplacian矩阵

1 Laplace算子的物理意义 Laplace算子的定义为梯度的散度. 在Cartesian坐标系下也可表示为: 或者,它是Hessian矩阵的迹: 以热传导方程为例,因为热流与温度的梯度成正比,那么温度的梯度的散度就是热量的损失率. 由此可见,Laplace算子可用于表现由于物质分布不均引起的物质输送. 2 Laplace算子的数学意义 现在,在一维空间中简单分析上面的式子: 也可以写作: 把分子第一项和第二项分别按泰勒展开: 可以看出Laplace算子实际上是一个使函数取平均的算子.多维空

输入一个整数矩阵,计算位于矩阵边缘的元素之和

输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素. 源代码: #include<stdio.h> #include<stdlib.h> int main() { int m,n;//矩阵的长和宽 int sum = 0; printf("输入矩阵的长和宽\n"); scanf("%d%d",&m,&n); int a[m][n];//存储矩阵的值 //为矩阵

OpenGL中两种计算投影矩阵的函数

OpenGL无意间同时看到两种创建投影矩阵的写法,可以说它们完成的是同样的功能,但写法完全不同,可以观摩一下什么叫做异曲同工之妙... 第一种: gltMakeShadowMatrix函数是重点 1 // Gets the three coefficients of a plane equation given three points on the plane. 2 void gltGetPlaneEquation(GLTVector3 vPoint1, GLTVector3 vPoint2,

复杂网络中聚类算法总结

网络,数学上称为图,最早研究始于1736年欧拉的哥尼斯堡七桥问题,但是之后关于图的研究发展缓慢,直到1936年,才有了第一本关于图论研究的著作.20世纪60年代,两位匈牙利数学家Erdos和Renyi建立了随机图理论,被公认为是在数学上开创了复杂网络理论的系统性研究.之后的40年里,人们一直讲随机图理论作为复杂网络研究的基本理论.然而,绝大多数的实际网络并不是完全随机的.1998年,Watts及其导师Strogatz在Nature上的文章<Collective Dynamics of Small

Classical method of machine learning

1. PCA principal components analysis 主要是通过对协方差矩阵Covariance matrix进行特征分解,以得出数据的主成分(即特征向量eigenvector)与它们的权值(即特征值eigenvalue). PCA是最简单的以特征量分析多元统计分布的方法.其结果可以理解为对原数据中的方差variance做出解释:哪一个方向上的数据值对方差的影响最大?换而言之,PCA提供了一种降低数据维度的有效办法:如果分析者在原数据中除掉最小的特征值所对应的成分,那么所得的

ML | spectral clustering

What's xxx In multivariate statistics and the clustering of data, spectral clustering techniques make use of the spectrum (eigenvalues) of the similarity matrix of the data to perform dimensionality reduction before clustering in fewer dimensions. Th

03:计算矩阵边缘元素之和

03:计算矩阵边缘元素之和 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素. 输入 第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开.接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开. 输出 输出对应矩阵的边缘元素和 样例输入 3 3 3 4 1 3 7 1 2 0 1 样例输出

POJ C程序设计进阶 编程题#1:计算矩阵边缘之和

编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素. 输入 第一行为整数k,表示有k组数据. 每组数据有多行组成,表示一个矩阵: 第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以空格分隔. 接下

计算矩阵的乘积

问题: 编写程序,计算两矩阵a与b的乘积,并输出结果 分析: 根据两矩阵相乘的规则,矩阵a的列数应与矩阵b的行数相同.若a是4行3列矩阵,b是3行2列矩阵,设乘积为c,则c是4行两列矩阵,由于数学上的矩阵恰好和C语言上二维数组相对应,因此本例说明三个二维数组变量,其所分配的存储空间恰好可以存放a.b.c三个矩阵所有的元素值,为简便计,不妨设矩阵元素为整型数值,矩阵a.b的元素值均由键盘输入,为增强直观性,希望所输入的数据以及输出的结果数据形式均与矩阵的书写顺序相对应,,即各矩阵按行列左右分开.上