資源簡介
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
評論
共有 條評論