为什么我的马尔可夫聚类算法(MCL)会在Matlab中生成NaN?
我在Matalb中尝试了马尔可夫聚类算法(MCL),但遗憾的是,我得到了一个大小为67*67的矩阵,并且它们的所有元素都是NaN 谁能告诉我怎么了为什么我的马尔可夫聚类算法(MCL)会在Matlab中生成NaN?,matlab,markov,Matlab,Markov,我在Matalb中尝试了马尔可夫聚类算法(MCL),但遗憾的是,我得到了一个大小为67*67的矩阵,并且它们的所有元素都是NaN 谁能告诉我怎么了 function adjacency_matrixmod2= mcl(adjacency_matrixmod2) % test the explanations in stijn van dongens thesis. % % @author gregor :: arbylon . net if nargin < 1 % m co
function adjacency_matrixmod2= mcl(adjacency_matrixmod2)
% test the explanations in stijn van dongens thesis.
%
% @author gregor :: arbylon . net
if nargin < 1
% m contains T(G3 + I) as stochastic matrix
load -ascii adjacency_matrixmod2.txt
end
p = 2;
minval = 0.001;
e = 1.;
emax = 0.001;
while e > emax
fprintf('iteration %i before expansion:\n', i);
adjacency_matrixmod2
fprintf('iteration %i after expansion/before inflation:\n', i);
m2 = expand(adjacency_matrixmod2)
fprintf('inflation:\n')
[adjacency_matrixmod2, e] = inflate(m2, p, minval);
fprintf('residual energy: %f\n', e);
end % while e
end % mcl
% expand by multiplying m * m
% this preserves column (or row) normalisation
function m2 = expand(adjacency_matrixmod2)
m2 = adjacency_matrixmod2 *adjacency_matrixmod2;
end
% inflate by Hadamard potentiation
% and column re-normalisation
% prune elements of m that are below minval
function [m2, energy] = inflate(adjacency_matrixmod2, p, minval)
% inflation
m2 = adjacency_matrixmod2 .^ p;
% pruning
m2(find(m2 < minval)) = 0;
% normalisation
dinv = diag(1./sum(m2));
m2 = m2 * dinv;
% calculate residual energy
maxs = max(m2);
sqsums = sum(m2 .^ 2);
energy = max(maxs - sqsums);
end
函数邻接矩阵MOD2=mcl(邻接矩阵MOD2)
%测试stijn van dongens论文中的解释。
%
%@作者格雷戈:阿比隆。网
如果nargin<1
%m包含T(G3+I)作为随机矩阵
加载-ascii邻接矩阵xmod2.txt
结束
p=2;
minval=0.001;
e=1。;
emax=0.001;
而e>emax
fprintf('展开前的迭代%i:\n',i);
邻接矩阵模2
fprintf('扩展后/膨胀前的迭代%i:\n',i);
m2=展开(邻接矩阵MOD2)
fprintf('通货膨胀:\n')
[邻接矩阵mod2,e]=膨胀(m2,p,minval);
fprintf('剩余能量:%f\n',e);
结束%e
结束%mcl
%乘以m*m展开
%这将保留列(或行)规格化
函数m2=展开(邻接矩阵MOD2)
m2=邻接矩阵MOD2*邻接矩阵MOD2;
结束
%阿达玛增强充气
%和列重新规范化
%修剪m中低于minval的元素
函数[m2,能量]=膨胀(邻接矩阵mod2,p,minval)
%通货膨胀
m2=邻接矩阵MOD2。^p;
%修剪
m2(find(m2这是我使用的代码,它的输入是一个邻接矩阵。该图像太小,无法读取节点上的标题。你有密码吗?如果你使用搜索引擎搜索“马尔可夫聚类算法Matlab”,你会得到什么?这些节点是gene的名字太棒了!如果你试过,就把它放到问题中去。如果有问题,请调试它。如果你仍然陷入困境,修改问题,说明你遇到了什么问题。好的,那么你得到了NaN-这是一个人们可以为你调查的具体错误。但是,在看到您的代码之前,他们无法提供帮助。因此,请在您的问题中编辑您的代码(或相关部分)。