最新列车运行图MATLAB程序
- 格式:doc
- 大小:62.00 KB
- 文档页数:19
用matlab画交通流密速关系为了作图更明显,这里分别假设畅行速度Sf的数值为1000,阻塞密度Dj的数值为500,这可能和实际情况不符,但是具体运用是可以对程序中的Sf 值和Dj值进行更改。
一、密度、流速和流量关系图及各种假设情况下的图。
图中:左上:V=DS;右上:1931年Green Shields 假设S=Sf(1-D/Dj);左下:1959年Greenberg 假设S=Sf*ln(Dj/D);右下:1961年Underwood 假设。
Matlab的程序如下:Sf=1000;Dj=500;subplot(2,2,1);for D=0:100:Dj;for S=0:10:Sf;V=D*S;plot3(S,D,V,'+r');hold on;end;end;for S=0:100:Sf;for D=0:10:Dj;V=D*S;plot3(S,D,V,'+r');hold on;end;end;Zlabel('流量','FontWeight','bold')Xlabel('流速','FontWeight','bold')Ylabel('密度','FontWeight','bold')title('\fontname{隶书}空间图形')subplot(2,2,2)D=0:10:Dj;S=Sf*(1-D/Dj);plot(S,D,'b*');Zlabel('流量','FontWeight','bold')Xlabel('流速','FontWeight','bold')Ylabel('密度','FontWeight','bold')title('\fontname{隶书} 1934年投影到XY平面') view(-37.5,80)subplot(2,2,3)Sf=1000;Dj=500;D=0:10:Dj;S=Sf*log(Dj./D);plot(S,D,'kh');Zlabel('流量','FontWeight','bold')Xlabel('流速','FontWeight','bold')Ylabel('密度','FontWeight','bold')title('\fontname{隶书} 1959年投影到XY平面')view(-37.5,80)subplot(2,2,4)Sf=1000;Dj=500;D=0:10:Dj;S=Sf*exp(-D/Dj);plot(S,D,'gp');Zlabel('流量','FontWeight','bold')Xlabel('流速','FontWeight','bold')Ylabel('密度','FontWeight','bold')title('\fontname{隶书} 1961年投影到XY平面')view(-37.5,80)二、Green Shields假设涉及到的图形。
train matlab 流程MATLAB 是一种用于数值计算的编程语言和环境,常用于机器学习和数据分析。
以下是一个简单的 MATLAB 训练流程,以线性回归为例:1. 数据准备:首先,你需要准备你的数据。
在 MATLAB 中,你可以使用`load` 函数从文件中加载数据,或者使用 `csvread` 或 `readtable` 函数从CSV 文件中读取数据。
```matlabdata = load('your_data_'); % 从 .mat 文件中加载数据```2. 数据预处理:接下来,你可能需要对数据进行一些预处理,例如归一化或标准化。
MATLAB 提供了 `zscore` 函数来进行标准化。
```matlabnormalized_data = zscore(data);```3. 特征选择:然后,你需要选择哪些特征用于训练模型。
你可以选择所有特征,或者只选择一部分特征。
4. 模型训练:接下来,你可以使用 MATLAB 的机器学习工具箱来训练你的模型。
对于线性回归,你可以使用 `fitlm` 函数。
```matlabX = normalized_data(:, 1:end-1); % 假设最后一列是目标变量Y = normalized_data(:, end);model = fitlm(X, Y);```5. 模型评估:训练完模型后,你需要评估它的性能。
你可以使用一些度量指标,例如均方误差 (MSE)。
```matlabY_predicted = predict(model, X);mse = mean((Y - Y_predicted).^2);```6. 模型优化:如果模型性能不佳,你可能需要优化你的模型。
你可以通过添加或删除特征、更改模型类型、调整模型参数等方式来实现。
7. 模型应用:最后,你可以使用训练好的模型来预测新数据。
以上是一个简单的 MATLAB 训练流程,具体步骤可能会根据你的数据和任务而有所不同。
城市轨道交通列车运行图自动生成与CAD转换王成;蔡哲扬;李容【摘要】基于人工模拟法编制列车运行图,保证每个时间段的对数满足设计要求的同时,根据虚拟链接及调整,使其满足列车折返约束,之后根据列车出入库的情况进行调整,使生成的运行图更好地符合设计需求,能够高效地对不同线路的不同全日行车计划进行铺画。
另外,将生成的运行图转换为CAD脚本,也减少了设计者的劳动强度。
以深圳地铁6号线为例实现全日运行图的铺画,表明该方法是有效可行的。
%The train diagram which was drawn up by using artificial simulation method, could meet the design requirements of train numbers for each time period, satisfy the train reverse constraint with virtual link and adjustment. According to the situation of train in-out stock, the diagram was adjusted further to meet the needs of designers. Different full-time train operation plan to different line could be drawn. At the same time, the train diagram could be translated into CAD script, the labour intensity could be reduced greatly. Finally Line 6 of Shenzhen Metro was taken as an example to implement the drawing of train diagram, show the method feasibility and effectiveness.【期刊名称】《铁路计算机应用》【年(卷),期】2015(000)008【总页数】6页(P37-41,45)【关键词】运行图铺画;虚拟连接;列车出入库;自动调整;CAD转换【作者】王成;蔡哲扬;李容【作者单位】西南交通大学信息科学与技术学院,成都 610031;西南交通大学信息科学与技术学院,成都 610031;西南交通大学信息科学与技术学院,成都610031【正文语种】中文【中图分类】U231.7;TP39列车运行图是列车运行的基础,是轨道交通运营企业实现列车安全、正点运行,有效组织轨道交通运输工作的重要手段,对保证运营企业各部门有效配合起到了决定性的作用[1]。
MATLAB编程方法构建道路场景程序一、背景介绍随着交通运输行业的发展,道路场景模拟已经成为了交通工程领域的一个重要研究方向。
利用计算机模拟道路场景可以帮助交通工程师进行交通流量预测、路段规划和智能交通系统的设计等工作。
MATLAB 作为一种功能强大的高级编程语言,可以很好地实现道路场景的模拟和分析。
二、道路场景程序的构建步骤构建道路场景程序需要经过以下步骤:1. 确定道路场景需求在进行道路场景程序的构建之前,首先需要明确道路场景的需求。
这包括道路长度、车道数量、车辆类型等信息,这些信息将直接影响到程序的设计和实现。
2. 绘制道路场景图利用MATLAB的绘图功能,可以实现道路场景图的绘制。
可以使用线段、圆等基本图形来绘制道路、交通标志和路口等。
也可以添加文字标注和颜色填充来对道路场景进行说明和美化。
3. 模拟车辆运动通过编写车辆运动的模拟算法,可以实现车辆在道路场景中的运动轨迹。
这涉及到车辆的加速度、速度等物理特性的模拟,同时还需要考虑车辆之间的碰撞和超车等情况。
4. 添加交通信号灯控制在道路场景程序中,可以添加交通信号灯的控制系统。
通过编写相应的程序,可以实现交通信号灯的变化和车辆的停等行为,进一步提高道路场景程序的仿真度。
5. 数据分析和可视化利用MATLAB的数据分析和可视化功能,可以对道路场景程序的仿真结果进行分析和展示。
例如可以绘制车辆流量随时间的变化曲线,或者对道路拥堵情况进行热力图分析等。
6. 优化和改进在完成道路场景程序的基本构建之后,可以根据实际需求对程序进行优化和改进。
这包括提升程序的运行速度、增加仿真精度和改进用户界面等。
三、MATLAB编程方法1. MATLAB基本语法在编写道路场景程序时,需要熟悉MATLAB的基本语法和程序结构。
这包括变量定义、逻辑判断、循环控制和函数定义等内容。
熟练掌握这些基本知识对于编写道路场景程序至关重要。
2. MATLAB绘图功能MATLAB具有强大的绘图功能,可以实现道路场景图的绘制和美化。
matlabfastsim fortran_轮轨关系MATLAB中的fastsim工具箱是一个用于仿真和优化机电系统动态行为的工具箱。
在fastsim中,轮轨关系是一种重要的力学约束,用于模拟铁路车辆在行驶过程中的动力学行为。
以下是使用MATLAB fastsim进行轮轨关系仿真的一般步骤:1. 准备模型:首先,需要创建或导入一个描述轮轨关系的模型。
这个模型通常包括车辆、轨道、轮对以及相应的力学约束。
模型可以根据实际需求进行简化或复杂化。
2. 定义参数:在仿真过程中,需要定义一些参数,如车辆质量、轨道不平度、轮对弹性模量等。
这些参数可以根据实际情况进行调整。
3. 编写仿真函数:使用MATLAB fastsim工具箱,可以编写一个仿真函数来计算车辆在行驶过程中的动态响应。
这个函数通常包括以下几个部分:a. 初始化:设置初始条件,如车辆位置、速度等。
b. 迭代求解:使用数值积分方法(如四阶龙格库塔法)求解轮轨关系方程。
c. 更新:根据求解得到的车辆运动状态,更新其他部件的运动状态。
d. 输出:计算并输出感兴趣的性能指标,如车辆振动、轨道磨损等。
4. 运行仿真:使用MATLAB运行仿真函数,得到车辆在行驶过程中的动态响应。
5. 分析结果:分析仿真结果,提取有用的信息,如车辆振动特性、轨道磨损规律等。
这些信息可以用于评估车辆行驶性能、优化轮轨关系设计等。
需要注意的是,这里提供的仅是一般性的指导,具体实现时可能需要根据实际问题进行调整。
另外,MATLAB fastsim工具箱还有许多其他功能,如优化算法、可视化等,可以进一步扩展轮轨关系仿真的应用范围。
1.31)绘制驱动力与行驶阻力平衡图利用Matlab画图,具体语句如下:n=600:1:4000;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; io=5.83;t=0.844;r=0.367;ig1=5.56;ua=0.377*r*n/(ig1*io);Ft1=Ttq*ig1*io*t/r;plot(ua,Ft1)hold on;n=600:1:4000;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; io=5.83;t=0.844;r=0.367;ig2=2.769;ua=0.377*r*n/(ig2*io);Ft2=Ttq*ig2*io*t/r;plot(ua,Ft2)hold on;n=600:1:4000;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; io=5.83;t=0.844;r=0.367;ig3=1.644;ua=0.377*r*n/(ig3*io);Ft3=Ttq*ig3*io*t/r;plot(ua,Ft3)hold on;n=600:1:4000;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; io=5.83;t=0.844;r=0.367;ig4=1.00;ua=0.377*r*n/(ig4*io);Ft4=Ttq*ig4*io*t/r;plot(ua,Ft4)hold on;n=600:1:4000;Ttq=-19.313+295.27*n/1000-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; io=5.83;t=0.844;r=0.367;ig5=0.793;ua=0.377*r*n/(ig5*io);Ft5=Ttq*ig5*io*t/r;plot(ua,Ft5)hold on;m=3880;f=0.012;g=9.8;CdA=2.77;u=0:1:120;Ff=m*g*f;Fw=CdA*u.^2/21.15;Fr=Ff+Fw;Ft5=Ttq*ig5*io*t/r;Ff=m*g*f;Fw=CdA*u.^2/21.15;Fr=Ff+Fw;plot(u,Fr)运行生成图像如下:2)求汽车最高车速,最大爬坡度及克服该坡度时相应的附着率当Ft=Ff+Fw时,汽车处于稳定状态,并达到最高车速由图可知Umax=101km/h最大爬坡度及附着率:一档时有最大爬坡度,由驱动力与阻力图当ua=8.037km/h时: Gsin错误!未找到引用源。
一、概述随着人工智能和自动驾驶技术的不断发展,对于车辆换道控制算法的研究越来越受到关注。
在自动驾驶系统中,车辆换道是一个重要的功能,能够有效地提高交通效率和安全性。
在车辆换道控制中,多项式轨迹和PID控制技术被广泛应用。
二、车辆换道多项式轨迹生成1. 多项式轨迹生成原理多项式轨迹生成是指根据给定的起始点、终止点和一系列约束条件,生成一条平滑的轨迹曲线,用于指导车辆进行换道操作。
常用的多项式轨迹包括二次多项式、三次多项式和五次多项式。
在Matlab中,可以利用多项式拟合和最小二乘法生成平滑轨迹。
2. 五次多项式轨迹生成步骤(1)根据起始点和终止点确定轨迹的起始和结束状态;(2)根据约束条件确定轨迹的最高阶数;(3)利用多项式拟合生成平滑轨迹;(4)对生成的轨迹进行优化和修正。
三、PID控制器设计1. PID控制原理PID控制器是一种经典的控制算法,由比例项(P)、积分项(I)和微分项(D)三部分组成。
它能够根据当前误差、历史误差和预期误差来调节控制量,使系统输出达到期望值。
在车辆换道控制中,PID控制器能够根据车辆位置和姿态调节转向和速度,实现平稳换道。
2. PID控制器参数整定(1)比例项(P):控制系统的静态稳定性,通过增大P值可以减小超调和调节时间。
(2)积分项(I):控制系统的动态稳定性,通过增大I值可以消除稳态误差。
(3)微分项(D):控制系统的阻尼性,通过增大D值可以减小振荡和抑制过冲。
四、Matlab实现车辆换道控制1. 多项式轨迹生成利用Matlab中的Curve Fitting Toolbox和多项式拟合函数,可以对给定的起始点和终止点生成平滑的五次多项式轨迹。
可以对生成的轨迹进行细化和修正,以满足车辆换道的连续性和平滑性要求。
2. PID控制器设计在Matlab/Simulink中,可以利用PID Controller模块设计车辆换道控制系统。
根据车辆的位置和速度信息,结合多项式轨迹生成的目标轨迹,调节PID控制器的参数,实现精准的车辆换道。
如何运行和调试Matlab代码Matlab是一种强大的数值计算和科学编程语言,广泛应用于各个领域,包括工程、科学研究和数据分析。
在使用Matlab编写代码时,我们经常需要进行运行和调试,以确保代码正确并高效地工作。
本文将介绍一些常用的方法和技巧,以帮助您运行和调试Matlab代码。
一、运行Matlab代码在Matlab中,有几种运行代码的方式,可以根据实际情况选择合适的方法。
1. 命令行方式最简单的方法是在Matlab的命令窗口直接输入代码,并按下回车键来执行。
这种方式适用于简单的代码片段或者快速测试。
2. 脚本文件方式创建一个以.m为后缀的脚本文件,在文件中编写Matlab代码。
然后,可以通过在命令窗口中输入脚本文件的文件名(不需要后缀)来运行整个脚本。
这种方式适用于较长的代码,方便复用和维护。
3. 函数方式如果需要编写可重复使用的代码块,可以将代码封装在函数中。
创建一个以.m 为后缀的函数文件,并在文件中定义函数,然后通过调用函数来运行代码。
这种方式适用于需要多次调用相同代码块的情况。
4. MATLAB Live Editor方式MATLAB Live Editor提供了一种交互式编程环境,可以组合代码、文本、图形和数学公式,使代码的编写和运行更加直观和灵活。
我们可以在Live Editor中编写和运行Matlab代码,通过选择“运行”按钮或按下Ctrl+Enter快捷键来执行代码。
这种方式适用于需要展示代码和结果之间的联系的情况。
二、调试Matlab代码在编写和运行大型或复杂的Matlab代码时,难免会遇到各种错误和问题。
调试是一种找出并解决这些问题的过程。
下面介绍几种常用的调试技巧。
1. debug模式Matlab提供了debug模式,可以逐行执行代码,同时查看变量和表达式的值,从而帮助我们找出问题所在。
在运行脚本或函数时,可以选择debug选项,并设置断点。
当代码执行到断点处时,程序会进入debug模式,此时可以一步一步地执行代码,并观察变量的变化。
实验名称:MATLAB 综合实验——高铁牵引供电系统运行数据分析实验目的:1. 理解MATLAB 在解决电气科学复杂工程问题中的应用;2. 掌握本实验复杂工程模型的建立、仿真与分析方法。
实验原理:1.基本原理综合运用教材书上的知识,以及本实验原理,对综合问题进行复杂工程模型的建立,仿真和分析。
2.谐波定义谐波(harmonic wave),从严格的意义来讲,谐波是指电流中所含有的频率为基波的整数倍的电量,一般是指对周期性的非正弦电量进行傅里叶级数分解,其余大于基波频率的电流产生的电量。
3. 电能质量标准及电能质量计算方法[1]中华人民共和国国家标准. GB/T 14549-1993 电能质量公用电网谐波.1993.[2]中华人民共和国国家标准. GB/T 15543-2008 电能质量三相电压允许不平衡度. 2008.第h 次谐波电压含有率HRU h计算公式:HRUh=Uh/U1 ×100 %式中:U h 为第h 次谐波电压(方均根值);U1 为基波电压(方均根值)。
第h 次谐波电流含有率HRI h计算公式:HRIh= Ih/I1 ×100 %式中:I h 为第h 次谐波电流(方均根值);I1 为基波电流(方均根值)。
.谐波电压含量U H计算公式:谐波电流含量I H计算公式:电压总谐波畸变率THD u计算公式:THDU =UH/U1×100%电流总谐波畸变率THD i计算公式:THDi= Ih/I1×100%4.离散傅里叶变换与快速傅里叶变换1) 傅里叶变换:它可以将一个以时间t 为自变量的连续的信号x(t)转换为以频率为自变量的函数X(j f),该函数是复数形式的2) 离散傅里叶变换:离散傅里叶变换,用于离散信号分析,是为适应于数字计算机计算的傅里叶DFT 处理信号的步骤可以简要归纳如下:①在得到一段信号后,首先得到的信息是该信号的时间长度 T。
②以一定的采样频率 Fs 进行采样,可以得到一个离散序列 x(n),其长度为 N=T*Fs。
有关"matlab实现mpc轨迹跟踪控制代码"的文章内容将包括对于MPC(模型预测控制)和轨迹跟踪控制的解释和实现方法。
文章的结构将从MPC和轨迹跟踪的基本概念开始,逐渐深入到具体的matlab 代码实现以及个人观点和理解。
文章总字数将超过3000字,格式为普通文本,适合在知识上共享。
文章预计将以以下内容为主:1. 简介:介绍MPC和轨迹跟踪控制的基本概念和应用场景。
2. MPC控制原理:解释模型预测控制的基本原理和实现方式,包括状态空间模型、预测优化和控制计算等方面的内容。
3. 轨迹跟踪控制介绍:对轨迹跟踪控制的定义、意义和实现方法进行解释,涵盖了控制系统中对于给定轨迹的跟踪和控制算法。
4. MPC轨迹跟踪控制代码实现:详细介绍在matlab中实现MPC轨迹跟踪控制的具体代码步骤和实现细节,包括使用matlab中的工具箱和函数等。
5. 示例与应用:通过具体的示例来展示MPC轨迹跟踪控制在实际工程中的应用,并对不同参数和条件下的控制效果进行分析和比较。
6. 总结与展望:对于MPC轨迹跟踪控制的优势和局限性进行总结,并对未来在该领域的研究方向和发展趋势进行展望。
文章中将不断提及"matlab实现mpc轨迹跟踪控制代码",并以此为线索,引导读者深入了解并掌握相关知识。
我将加入个人观点和理解,以期更好地帮助读者理解和运用这一主题。
注:根据任务描述,以上内容是根据预设的要求进行撰写的。
如有其他具体要求,请更新指定的主题内容。
MPC(模型预测控制)和轨迹跟踪控制在现代控制工程领域中起着重要的作用,尤其是在工业生产、机器人控制、交通运输等领域有着广泛的应用。
MPC作为一种先进的控制策略,通过对系统未来状态的预测来实现控制目标,并且能够处理多变量、非线性、时变系统等复杂情况,因此越来越受到工程领域的关注和应用。
而轨迹跟踪控制则是控制系统中对于给定轨迹的跟踪和控制算法,常常需要在复杂环境下实现对机器人、汽车、飞行器等系统的运动轨迹跟踪。
利用matlab GUI编程实现对不同格式的图片的打开和保存建立的GUI如下:在打开按钮的回调函数里,利用uigetfile()函数建立一个打开文件的对话框,利用imread()函数来打开图片,imshow()函数显示图像,具体代码如下:[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');if isequal(filename,0)disp('Users Selected Canceled');elsestr=[pathname filename];im = imread(str);axes(handles.axes1);%axes1是坐标轴的标示imshow(im);end;运行之后的截图如下:在保存按钮的回调函数中,利用了uiputfile()函数建立了一个保存文件的对话框,调用matlab 的imwrite()函数保存经过修改的图像,具体代码如下:[filename,pathname]=uiputfile({'*.bmp';},'保存图片','Undefined.bmp');if ~isequal(filename,0)str = [pathname filename];px=getframe(handles.axes1);%saveas(gcf,str,'bmp');�ta = getappdata(gcf,'Timg');imwrite(px.cdata,str,'bmp');close(gcf);elsedisp('保存失败');end;其中的函数getframe()是为了获取坐标轴中的一帧图像,其返回的对象中有cdata和colormap 两个成员。
在 MATLAB 中,你可以使用泊松分布来模拟车辆到达的随机过程。
泊松分布通常用于模拟随机事件的到达速率,例如车辆到达、电话呼叫、网络数据包到达等等。
以下是一个简单的 MATLAB 代码示例,用于模拟车辆到达并满足泊松分布:模拟车辆到达的泊松分布lambda=5;泊松分布的到达率(每单位时间的平均到达次数)模拟的时间段和时间步长total_time=100;总模拟时间(单位:时间段)time_step=0.1;模拟的时间步长(单位:时间段)初始化模拟t=0;arrival_times= [];模拟车辆到达while t<total_time生成泊松分布随机变量interarrival_time=exprnd(1/lambda);更新时间t=t+interarrival_time;如果到达时间在总模拟时间内,则记录到达时间if t<total_timearrival_times= [arrival_times,t];endend绘制车辆到达时间的直方图histogram(arrival_times,20);xlabel('到达时间');ylabel('车辆数量');title('车辆到达泊松分布模拟');这个代码示例使用了 MATLAB 的exprnd函数来生成符合指定到达率的泊松分布随机变量。
在模拟过程中,不断生成车辆到达的时间,并记录这些时间。
最后,使用直方图将到达时间的分布可视化。
你可以根据需要调整lambda、total_time和time_step参数来满足你的特定需求。
这个示例只是一个简单的起点,你可以根据实际情况扩展和修改代码。
基于Matlab模拟城轨列车紧急制动曲线图
沈效良
【期刊名称】《《电脑知识与技术》》
【年(卷),期】2012(008)010
【摘要】该文通过Matlab计算城市轨道车辆在紧急制动情况下的制动距离,并模拟出相应的距离-速度曲线图。
【总页数】3页(P2423-2424,2428)
【作者】沈效良
【作者单位】苏州市职业大学江苏苏州215104
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于matlab编程绘制时间-荷载-沉降量曲线图 [J], 况佳亮;李志军
2.基于Matlab PDETOOL的水电模拟实验电场数值模拟 [J], 苏关东;赵兰苓;张鹏;孙德永;顾勋;韩贝宇
3.基于Matlab模拟城轨列车紧急制动曲线图 [J], 沈效良
4.基于CFD数值模拟的城轨列车隧道空气附加阻力计算影响因素研究 [J], 宫保贵;孙国斌;曹虎;孙丛君;葛学超;李家兴
5.基于MATLAB的地磁场中带电粒子运动模拟分析 [J], 钟海坚;陈宗华;赵炳炎因版权原因,仅展示原文概要,查看原文内容请购买。
%第一个%设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=[414148414248454141414148484141414841414141414141414141574141414141484148415748414141484148554841]';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)-1for i=1:d1(end)-d1(1)+1if d1(k+1)-y11(i)+m1(k+1)>=5 && y11(i)-d1(k)-n1(k)>=5;z1(i)=y11(i);endendend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车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;endif z1(i)>z1(i+1)r=floor((k-1)/5)+1;for u=1:rg=i-k+1+5*(u-1);if g>d1(end)-d1(1)+1g=d1(end)-d1(1)+1;endl1(g)=z1(g);endk=1;endendl1(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 onendy11=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 onend%第二个%设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=[18201818181818182018181818]';v2=mode(x2)j2=x2-v2;disp(j2)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。
n2=(j2+abs(j2))/2;m2=j2;m2(find(j2>0))=0;%选取可行列车z2=zeros(1,d2(end)-d2(1)+1);%(或zeros(1,d(end)-d(1)))y21=d2(1):1:d2(end);for k=1:length(x2)-1for i=1:d2(end)-d2(1)+1if d2(k+1)-y21(i)+m2(k+1)>=5 && y21(i)-d2(k)-n2(k)>=5;z2(i)=y21(i);endendend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l2=zeros(1,length(d2)+50);t2=zeros(1,d2(end)-d2(1)+1);for i=1:d2(end)-d2(1)if z2(i)+1==z2(i+1)k=k+1;endif z2(i)>z2(i+1)r=floor((k-1)/5)+1;for u=1:rg=i-k+1+5*(u-1);if g>d2(end)-d2(1)+1g=d2(end)-d2(1)+1;endl2(g)=z2(g);endk=1;endendl2(find(l2==0))=[];%找到l中0的位置,并令其为空,即删除w2=l2+v2;y23=41*ones(1,length(l2));y24=59*ones(1,length(w2));for i=1:length(l2)plot([l2(i),w2(i)],[y23(i),y24(i)]);hold onendy21=41*ones(1,length(d2));y22=59*ones(1,length(h1));for i=1:length(d2)plot([d2(i),h1(i)],[y21(i),y22(i)]);hold onend%第三个%设6:42时间为0时刻,转换如下。
a3=[7 8 9 9 10 10 11 11 12 13 14 15 16 16 17 18 19 19 19 20];b3=[50 26 6 18 20 50 13 36 56 52 52 51 28 48 26 10 10 39 58 39]; c3=7*ones(1,length(a3));d3=60*(a3-c3)+b3+18;e3=[8 8 9 9 10 11 11 11 13 14 15 16 16 17 17 18 19 20 20 21];f3=[13 49 31 41 43 13 36 59 19 15 16 21 51 11 49 33 33 2 21 2]; g=7*ones(1,length(a3));h3=60*(e3-g)+f3+18;%输入经历时间,求众数,得到一个差值矩阵f。
x3=[2323252323222323232324302322232323232323]';v3=mode(x3)j3=x3-v3;disp(j3)%矩阵剔除,将f中大于0的用0代替得以矩阵m,将f小于0的数代替得一矩阵n,n,m都是1*20的矩阵。
n3=(j3+abs(j3))/2;m3=j3;m3(find(j3>0))=0;%选取可行列车z3=zeros(1,d3(end)-d3(1)+1);%(或zeros(1,d(end)-d(1)))y31=d3(1):1:d3(end);for k=1:length(x3)-1for i=1:d3(end)-d3(1)+1if d3(k+1)-y31(i)+m3(k+1)>=5 && y31(i)-d3(k)-n3(k)>=5;z3(i)=y31(i);endendend%将满足条件的列车再进行剔除,求数量最大且满足条件的列车r=0;g=0;k=1;p=1;l3=zeros(1,length(d3)+50);t3=zeros(1,d3(end)-d3(1)+1);for i=1:d3(end)-d3(1)if z3(i)+1==z3(i+1)k=k+1;endif z3(i)>z3(i+1)r=floor((k-1)/5)+1;for u=1:rg=i-k+1+5*(u-1);if g>d3(end)-d3(1)+1g=d3(end)-d3(1)+1;endl3(g)=z3(g);endk=1;endendl3(find(l3==0))=[];%找到l中0的位置,并令其为空,即删除w3=l3+v3;y33=59*ones(1,length(l3));y34=82*ones(1,length(w3));for i=1:length(l3)plot([l3(i),w3(i)],[y33(i),y34(i)]);hold onendy31=59*ones(1,length(d3));y32=82*ones(1,length(h3));for i=1:length(d3)plot([d3(i),h3(i)],[y31(i),y32(i)]);hold onend%第四个%设6:42时间为0时刻,转换如下。
a4=[7 8 8 8 8 8 9 9 9 10 10 11 11 11 13 13 13 13 15 15 16 16 16 18 18 19 20 20];b4=[0 0 21 28 48 57 9 15 25 51 59 16 39 57 21 32 42 56 7 47 5 24 54 4 36 42 9 39];c4=7*ones(1,length(a4));d4=60*(a4-c4)+b4+18;e4=[7 8 8 8 9 9 9 9 10 11 11 11 12 12 13 14 14 14 15 16 16 16 17 18 19 20 20 21];f4=[27 27 49 56 16 32 37 42 0 19 27 44 15 25 49 0 10 24 35 15 33 59 29 31 4 10 37 7];g=7*ones(1,length(a4));h4=60*(e4-g)+f4+18;%输入经历时间,求众数,得到一个差值矩阵f。