⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metiscls.m

📁 利用加速随机游走计算初始点确定的分类算法
💻 M
字号:
function cRe = METISCls(W,k)


%remove self loop
W = (triu(W,1) + tril(W,-1));
[m,n] = size(W);
if k==m%every node is partition
    cRe = [1:m]-1;
    return;
elseif k==1
    cRe = zeros(m,1);
    return;
end
W2MetisInput(W);

if ispc, shell = 'dos'; else, shell = 'unix'; end                %  Which OS ?

[m,n] = size(W);
if k>m
    k=m;
end

metis = '(''./kmetis MeIn_metis.txt ';


cmnd = strcat([shell metis ' ' num2str(k) ''')']);

status = eval(cmnd); 

if status==0
    cRe=-1%error;
    return;
end

cmnd2 = 'load MeIn_metis.txt.part';
cmnd2 = strcat([cmnd2 '.' num2str(k)]);
eval(cmnd2);
cRe = MeIn_metis;



function W2MetisInput(W,fname,iToInt)

%convert metrix to METIS Input

if nargin<3
    iToInt = 0;
end
if nargin<2
    fname = 'MeIn';
end

[m,n] = size(W);
if iToInt ~=0%turn the weight into integrate
    W(find(W<0.000001)) = 0;
    W = round(W * 1000000);    
end
    W = (W + W')/2;
    W = sparse(W);

fname = [fname '_metis.txt'];
fid1 = fopen(fname,'w');
if fid1>0
    fprintf(fid1, '%d %d 1\n',m,nnz(W)/2);
    
else
    return;
end


%try to do it columnise, this should be much better (faster) than row-wise
%for large graphs.
W = W';
for i=1:m
    pos  = find(W(:,i)>0);
    for j=1:length(pos)
        fprintf(fid1,'%d %d ',pos(j),W(pos(j),i));
        
    end
    fprintf(fid1,'\n');
    
end

% for i=1:m
%     pos  = find(W(i,:)>0);
%     for j=1:length(pos)
%         fprintf(fid1,'%d %d ',pos(j),W(i,pos(j)));
%         
%     end
%     fprintf(fid1,'\n');
%     
% end


fclose(fid1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -