资源简介

matlab程序,分析复杂网络时使用 以美国航空网数据集为例 将txt文件中的数据集改为--邻接矩阵--形式进行保存 转换结果为无向、无权图 a为节点个数(可随意设) 为了执行简单,函数没有设置参数,大家直接在程序里改参数a的值

资源截图

代码片段和文件信息

function  [ ADegtxt_line_number ] = Txt_convert_to_AdjMatrix(  )
%-- 将txt文件中的数据集改为--邻接矩阵--形式进行保存
%-- 转换为无向、无权图
%-- a为节点个数

close all;
clear;
clc;

fid = fopen(‘USAir97-(332).txt‘‘r‘);

txt_line_number=0;  %--txt文件中行的个数,每读一行,+1

a=332;
A=zeros(aa); %--初始化矩阵,行列为节点个数

Deg = zeros(1a);  %--初始化度值=0

T_line=zeros(13);   %--存储txt中每行分割后的3个元素值

while ~feof(fid)        % 判断是否为文件末尾   
    str_line=fgetl(fid);  %--读取txt文件中的一行
    
    [token_1 remain_1] = strtok(str_line); %--取第一个元素的值        
    i=str2double(token_1); %---矩阵A对应行坐标的值
    
    [token_2 remain_2] = strtok(remain_1);    
    j=str2double(token_2); %---矩阵A对应列坐标的值
    
    %****---矩阵A对应位置上的值赋1---****%
    A(ij) = 1;
    A(ji) = A(ij); 
    %************************************% 
    
    Deg(i) = sum(A(i:));%--求节点的度值(因矩阵对称位置都赋值了,所以矩阵行、列的度值都要记录下来)
    Deg(j) = sum(A(j:));%--求节点的度值(否则,边的总和不是节点度值总和的2倍)
    
    txt_line_number=txt_line_number+1;
    
end   %---while

filename= sprintf(‘%s-a-%d.mat‘‘D:\USAir97‘a);  %--- 存放到D盘的位置
save(filename‘A‘);

filename= sprintf(‘%s-a-%d.mat‘‘D:\USAir97_Deg‘a);
save(filename‘Deg‘);

% sum(Deg);  %---正确时(sum(Deg)=2*txt_line_number)

disp(‘ok!‘);  %--2015-04-21

end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1443  2015-07-02 11:11  matlab-Txt_convert_to_AdjMatrix\Txt_convert_to_AdjMatrix.m

     文件      55276  2015-03-27 09:40  matlab-Txt_convert_to_AdjMatrix\USAir97-(332).txt

     文件        177  2015-07-02 11:11  matlab-Txt_convert_to_AdjMatrix\说明.txt

     目录          0  2015-07-02 11:13  matlab-Txt_convert_to_AdjMatrix

----------- ---------  ---------- -----  ----

                56896                    4


评论

共有 条评论