【数学建模集训系列】公交查询系统的matlab实现-站点和站点之间直达矩阵

%============================================================== % 功能: 输出两个矩阵,分别是站点之间的联通矩阵、站点经过的线路统计 % 日期: 8/8/2011 %============================================================== clear,clc tic %计时开始 fid=fopen('Bus.txt','r');%打开数据 if fid>0 disp('数据文件打开成功!') else disp('打开失败'),return end a=[]; b=[]; maxS=0;%初始化最大站点数 %计算最大站点数 while ~feof(fid) a=fgetl(fid); if isempty(a) %disp('原路返回') else n=find(a=='S'); for i=1:length(n) if str2num(a(n(i)+1:n(i)+4))>maxS maxS=str2num(a(n(i)+1:n(i)+4)); end end end end disp(['站点数量为: ' num2str(maxS)]) clear a b maxS %------------------------------------------------------------ %fclose(fid);%关闭文件 %fid=fopen('Bus.txt','r');%重新打开文件 fseek(fid,0,-1);%修改文件指针,跳到文件头 %fgetl(fid) %---------------------SS_matrix-------------------------- %SS_matrix_con表示是否直接连通,SS_matrix_tim表示时间 %SS_matrix_mon表示价格,SS_matrix_L,表示连通两站点间的公交路线 %SS_matrix_con=zeros(maxS);%站点间联通矩阵,初始化全零 a=[]; temp_L=[]; while ~feof(fid) a=fgetl(fid); %记录当前L n_L=find(a=='L'); if ~isempty(n_L) temp_L=str2num(a(n_L+1:n_L+3)); end %temp_L n=find(a=='S'); if ~isempty(n) for i=1:length(n) for j=i:length(n) a1=str2num(a(n(i)+1:n(i)+4)); a2=str2num(a(n(j)+1:n(j)+4)); SS_matrix_con(a1,a2)=1; %SS连通矩阵 %SS_matrix_L(a1,a2)=temp_L;%SS的线路矩阵 if a1~=a2 SS_matrix_tim(a1,a2)=(j-i)*3; end end end end end %------------处理原路返回的路线---------------- temp_L=1; n=[]; fseek(fid,0,-1);%修改文件指针,跳到文件头 for i=3:(520*4-1) temp=fgetl(fid); %记录当前L n_L=find(a=='L'); if ~isempty(n_L) temp_L=str2num(a(n_L+1:n_L+3)); end if ~isempty(temp) if temp(1)=='S' n=find(temp=='S'); for i=length(n):-1:1 for j=i:-1:1 a1=str2num(temp(n(i)+1:n(i)+4)); a2=str2num(temp(n(j)+1:n(j)+4)); SS_matrix_con(a1,a2)=1; SS_matrix_tim(a1,a2)=(i-j)*3; %SS_matrix_L(a1,a2)=temp_L;%SS的线路矩阵 end end end end end %-------------------------------------------- %disp('站点之间互相连通的稀疏矩阵为') %SS_xishu=sparse(SS_matrix); clo=fclose(fid);%关闭数据文件 if clo==0 disp('数据文件成功关闭!') else disp('数据文件关闭失败!'),return end save D:\matlab_files\SSdata_con SS_matrix_con disp('站点S间的连通矩阵已经保存为D:\matlab_files\SSdata_con.mat') save D:\matlab_files\SSdata_tim SS_matrix_tim disp('站点S间的时间矩阵已经保存为D:\matlab_files\SSdata_tim.mat') %save D:\matlab_files\SSdata_L SS_matrix_L %disp('站点S间的线路矩阵已经保存为D:\matlab_files\SSdata_L.mat') toc %结束计时 clear


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值