列车运行图MATLAB程序讲课教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
列车运行图M A T L A B
程序
%第一个
%设6:42时间为0时刻,转换如下。
a1=[6 7 7 7 7 7 7 8 8 9 9 9 9 9 10 10 10 10 10 10 11 11 12 12 12 12 13 13 14 14 15 15 15 16 16 16 16 17 17 17 17 18 18 18 18 19 20 21];
b1=[42 0 10 22 33 40 52 15 30 12 17 22 27 40 5 10 15 28 45 50 33 43 7 13 34 43 5 18 25 43 6 40 45 0 18 35 57 3 19 32 37 2 12 36 42 22 47 6]; c1=7*ones(1,length(a1));
d1=60*(a1-c1)+b1+18;
e1=[7 7 7 8 8 8 8 8 9 9 9 10 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 14 15 15 15 16 16 16 16 17 17 18 18 18 18 18 19 19 19 20 21 21]; f1=[23 41 58 3 15 28 37 56 11 53 58 10 15 21 46 51 3 9 26 31 14 24 48 54 15 24 46 15 6 24 47 21 26 48 59 23 38 0 7 13 18 43 0 17 30 17 35 47];
g=7*ones(1,length(a1));
h1=60*(e1-g)+f1+18;
%输入经历时间,求众数,得到一个差值矩阵f。
x1=[41
41
48
41
42
48
45
41
41
41
41
48
48
41
41
41
48
41
41
41
41
41
41
41
41
41
41
57
41
41
41
41
41
48
41
48
41
57
48
41
41
41
48
41
48
55
48
41]';
v1=mode(x1)
j1=x1-v1;
disp(j1)
%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。
n1=(j1+abs(j1))/2;
m1=j1;
m1(find(j1>0))=0;
%选取可行列车
z1=zeros(1,d1(end)-d1(1)+1);%(或zeros(1,d(end)-d(1)))
y11=d1(1):1:d1(end);
for k=1:length(x1)-1
for i=1:d1(end)-d1(1)+1
if d1(k+1)-y11(i)+m1(k+1)>=5 && y11(i)-d1(k)-n1(k)>=5;
z1(i)=y11(i);
end
end
end
%将满足条件的列车再进行剔除,求数量最大且满足条件的列车
r=0;
g=0;
k=1;
p=1;
l1=zeros(1,length(d1)+50);
t1=zeros(1,d1(end)-d1(1)+1);
for i=1:d1(end)-d1(1)
if z1(i)+1==z1(i+1)
k=k+1;
end
if z1(i)>z1(i+1)
r=floor((k-1)/5)+1;
for u=1:r
g=i-k+1+5*(u-1);
if g>d1(end)-d1(1)+1
g=d1(end)-d1(1)+1;
end
l1(g)=z1(g);
end
k=1;
end
end
l1(find(l1==0))=[];%找到l中0的位置,并令其为空,即删除w1=l1+v1;
y13=0.1*ones(1,length(l1));
y14=41*ones(1,length(w1));
for i=1:length(l1)
plot([l1(i),w1(i)],[y13(i),y14(i)]);
hold on
end
y11=0.1*ones(1,length(d1));
y12=41*ones(1,length(h1));
for i=1:length(d1)
plot([d1(i),h1(i)],[y11(i),y12(i)]);
hold on
end
%第二个
%设6:42时间为0时刻,转换如下。
a2=[8 8 8 10 10 10 11 13 14 15 16 19 20];
b2=[6 44 58 0 24 53 16 32 23 58 28 19 19];
c2=7*ones(1,length(a2));
d2=60*(a2-c2)+b2+18;
e2=[8 9 9 10 10 11 11 13 14 16 16 19 20];
f2=[24 4 16 18 42 11 34 50 43 16 46 37 37];
g=7*ones(1,length(a2));
h1=60*(e2-g)+f2+18;
%输入经历时间,求众数,得到一个差值矩阵f。
x2=[18