Matlab一个计算不同拉普拉斯矩阵的小函数

计算各式拉普拉斯矩阵

由来

最近研究谱聚类社区发现,一直在实现不同的拉普拉斯矩阵形式,然后不幸发现做实验的时候不同类型的输入再对应不同方案的L矩阵形式,输出的组合数目实在。。索性把比较常见的拉普拉斯矩阵计算方式写成函数,传上来方便众人。并没什么技术含量,只是方便其它人Ctrl+C 能把时间专注于自己的实验思路上去。

Matlab代码

function L = calDifLaplacian( W, type )
%CALDIFLAPLACIAN 此处显示有关此函数的摘要
% W:输入的邻接/相似矩阵
% type:计算拉普拉斯矩阵的方案or在某些算法中的实现形式
% L返回值:拉普拉斯矩阵

n = length(W);
D = zeros(n);
for i=1:n
    D(i,i)= sum(W(i, :));
end

if strcmp(type,'standard')
    L = D - W;
elseif strcmp(type, 'normalized')
    L = D - W;
    L = pinv(D)*L;     %D的(伪)逆*L——标准化
elseif strcmp(type, 'NJW')
    L = (D^-1/2) * A * (D^-1/2);
elseif strcmp(type, 'MS')
    L = (D^-1) * W;
end

end

致小白注

以上代码请右击“当前文件夹”空白区域,新建文件—函数,更名为calDifLaplacian(代码中是这么写的,如果更改记得连同文件名和function后的名字一起改掉)。如需实验请新建脚本后,直接调用该函数(如:L = calDifLaplacian( W, ‘standard’ )),查看L结果。

The End

当然拉普拉斯阵的实现方式还会有很多,相信能够在该函数的基础上进行改动~

发布了12 篇原创文章 · 获赞 14 · 访问量 6万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览