资源简介
本代码为2007年数学建模B题,乘公交看奥运代码文件。包含了搜索法和Dij两种算法,注释详细,还有一个GUI窗口
代码片段和文件信息
function [Line LineSta] = GetData( )
%本函数用于读取txt文本
%最后的OUTPUT中包含Line和LineSta
%Line由n个元胞构成,每个元胞中包含了:车辆编号、收费模式(分段计价为1、单一票制为2)、线路类型、路径
%Line由n个元胞构成,每个元胞代表一条线路,每个double变量表示一个站点
TxtRead = fopen(‘附件\1.1 公汽线路信息.txt‘ ‘r‘); %以二进制的格式读取TXT文本
Num = 1; %计数标识
while 1 %这里开始循环,一排一排的来读取TXT文本中的顺序
NewLine = fgetl(TxtRead); %NewLine为读取的新一行的数据
if ~ischar(NewLine)
break;%如果读取到异常字符即停止
end
if strcmp(NewLine‘END‘)
break;%如果读到末位行即停止
end
if strcmp(NewLine ‘‘)
continue;%如果读到空白行,就舍弃
end
if strcmp(NewLine(1) ‘L‘)
LineNum = NewLine;%如果读取到的行为线路名,即做标记
continue
end
if strcmp(NewLine ‘分段计价。‘)%如果读取到的是定价方式,就做标记
Fee_Bus = 1;
continue
elseif strcmp(NewLine ‘单一票制1元。‘)
Fee_Bus = 2;
continue
end
if strcmp(NewLine(1:3) ‘上行:‘) %统计每条线路的信息,并存储到元胞Line中
Line{Num 1} = LineNum;
Line{Num 2} = Fee_Bus;
Line{Num 3} = ‘上行‘;
Line{Num 4} = NewLine(4:end);
Num = Num + 1;
continue
elseif strcmp(NewLine(1:3) ‘下行:‘)
Line{Num 1} = LineNum;
Line{Num 2} = Fee_Bus;
Line{Num 3} = ‘下行‘;
Line{Num 4} = NewLine(4:end);
Num = Num + 1;
continue
elseif strcmp(NewLine(1:3) ‘环行:‘)%环形线这个地方的处理需要注意,分成了顺时针和逆时针两条线
Line{Num 1} = LineNum;
Line{Num 2} = Fee_Bus;
Line{Num 3} = ‘环顺‘;
Line{Num 4} = strcat(NewLine(4:end) NewLine(10:end));
Num = Num + 1;
Line{Num 1} = LineNum;
Line{Num 2} = Fee_Bus;
Line{Num 3} = ‘环逆‘;
Line{Num 4} = strcat(NewLine(4:end) NewLine(10:end));%由于格式的特殊性,这里不能直接把逆环写出来,需要在下方进行数据处理时再进行倒序
Num = Num + 1;
continue
elseif strcmp(NewLine(1) ‘S‘)%如果这个地方上行线和下行线相同,则同样需要分割为2条线路
Line{Num 1} = LineNum;
Line{Num 2} = Fee_Bus;
Line{Num 3} = ‘上行_同‘;
Line{Num 4} = NewLine;
Num = Num + 1;
Line{Num 1} = LineNum;
Line{Num 2} = Fee_Bus;
Line{Num 3} = ‘下行_同‘;
Line{Num 4} = NewLine;%由于格式的特殊性,这里不能直接把下行写出来,需要在下方进行数据处理时再进行倒序
Num = Num + 1;
continue
end
end
%至此已经把TXT文本中的数据统计完毕,
%接着需要查找每条线路的站点个数并进行统计
%同时需要将环形和上行线下行线相同的线路进行处理
for i = 1: size(Line 1)
LineStep = Line{i 4};%将每条线路存储进LineStep
StaNum_Loc = findstr(LineStep ‘S‘);%这里findstr函数存储的每个值代表S的每个位置,长度即为站点个数
Sta = zeros(1 length(StaNum_Loc));
if strcmp(Line{i 3} ‘环逆‘) || strcmp(Line{i 3} ‘下行_同‘) %如果是环逆和下行_同,则需要在二次统计时进行逆序统计
for j = length(StaNum_Loc) : -1 : 1
Sta(length(StaNum_Loc) - j + 1) = str2double(LineStep((StaNum_Loc(j) + 1):(StaNum_Loc(j) + 4)));
end
else
for j = 1:length(StaNum_Loc)
Sta(j) = str2double(LineStep((StaNum_Loc(j) + 1):(StaNum_Loc(j) + 4)));
end
end
LineSta{i} = Sta;
end
fclose(TxtRead);%关闭文件
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 128 2018-08-24 17:39 CODE\ReadMe.txt
文件 504 2018-08-25 23:56 CODE\第一问代码\Dijkstra\Dijkstra.m
文件 74235 2018-08-25 18:37 CODE\第一问代码\Dijkstra\Line.mat
文件 13119881 2018-08-25 18:39 CODE\第一问代码\Dijkstra\LineMat.mat
文件 246679 2018-08-25 18:39 CODE\第一问代码\Dijkstra\LineNum.mat
文件 55735 2018-08-25 18:39 CODE\第一问代码\Dijkstra\LineSta.mat
文件 1028341 2018-08-25 18:39 CODE\第一问代码\Dijkstra\MinDisMat.mat
文件 615726 2018-08-25 23:36 CODE\第一问代码\Dijkstra\MinDisMat_mon.mat
文件 72 2018-08-27 00:37 CODE\第一问代码\Dijkstra\ReadMe.txt
文件 3521 2018-08-25 01:12 CODE\第一问代码\GetData.m
文件 2600 2018-08-25 23:36 CODE\第一问代码\GetMat.m
文件 656 2018-08-25 23:36 CODE\第一问代码\GetMinMat.m
文件 609 2018-08-26 17:05 CODE\第一问代码\LineSys_Main.m
文件 305 2018-08-26 17:44 CODE\第一问代码\NoCh.m
文件 2249 2018-08-25 19:21 CODE\第一问代码\OneCh.m
文件 91 2018-08-26 21:16 CODE\第一问代码\ReadMe.txt
文件 302 2018-08-27 13:42 CODE\第一问代码\test.m
文件 2997 2018-08-25 19:19 CODE\第一问代码\TwoCh.m
文件 618 2007-09-11 11:31 CODE\第一问代码\附件\1 公汽和地铁线路信息数据文件格式说明.txt
文件 182811 2018-08-24 17:37 CODE\第一问代码\附件\1.1 公汽线路信息.txt
文件 263 2007-08-23 03:05 CODE\第一问代码\附件\1.2 地铁线路信息.txt
文件 197 2007-09-12 11:53 CODE\第一问代码\附件\2 地铁换乘公汽信息数据文件格式说明.txt
文件 570 2007-08-23 04:23 CODE\第一问代码\附件\2.1 地铁T1线换乘公汽信息.txt
文件 475 2007-08-23 04:23 CODE\第一问代码\附件\2.2 地铁T2线换乘公汽信息.txt
文件 2127 2018-08-26 13:49 CODE\第二问代码\Dijkstra\Dijkstra.m
文件 745 2018-08-25 21:54 CODE\第二问代码\Dijkstra\DInfo.mat
文件 14378179 2018-08-25 21:55 CODE\第二问代码\Dijkstra\LineMat_sub.mat
文件 689415 2018-08-25 21:56 CODE\第二问代码\Dijkstra\LineNum_sub.mat
文件 55920 2018-08-25 21:56 CODE\第二问代码\Dijkstra\LineSta_sub.mat
文件 73544 2018-08-25 21:54 CODE\第二问代码\Dijkstra\Line_sub.mat
............此处省略42个文件信息
相关资源
- 数理统计与MATLAB工程数据分析(PDF+随
- MATLAB 提取Gabor特征
- Matlab电机仿真实例230692
- 散点拟合平面的MATLAB程序
- matlab最速下降法与牛顿法结合求解函
- 图像信息熵 matlab M文件
- lp_solve matlab
- 《MATLAB编程第二版)》高清晰PDF版
- 8PSK通信系统的蒙特卡罗仿真分析 ma
- 拨号音分析
- 坐标转换/坐标标定(matlab优化方法实
- 基于matlab的车牌识别系统论文
- 信号检测与估计-理论与应用答案及
- 混合高斯模型matlab
- 8psk的调制传输和解调
- matlab人脸识别217995
- Norden E.Huang的FEEMD算法
- 同步挤压小波变换分离混沌干扰 mat
- UR5—Vrep在MATLAB下拾取仿真
- matlab分析谐波
- 密钥生成CQG量化
- 密钥生成CQ量化
- 压缩感知(Compressed Sensing CS)matlab代
- ROC曲线MATLAB程序
- Matlab功率谱计算
- 纸牌识别Matlab源程序+报告
- dijkstra算法改进的matlab程序能求出两点
- 基于OFDMA系统的多用户资源分配算法,
- matlab图像归一化代码
- EEMD的MATLAB程序
评论
共有 条评论