杰尼龟啊 2021-10-26 23:08 采纳率: 66.7%
浏览 250
已结题

Python中关于大量绘制速度曲线的问题

问题背景:
绘制横坐标S(距离)、纵坐标V(速度)的曲线图,需要用到的是高中物理中的匀变速直线运动,总共会用得到的参数就是t(时间)、s(距离)、a(加速度)、v(速度)。总的来说就是假定在理想状况下,我只需要输入有几段限速路段,限速路段的距离(限速路段头尾相连),和其对应的限速值,加速度可以假定为0.5-1.1m/s²之类的,就可以生成总路程与其对应速度的曲线。
代码中有部分地方如果要理解的话会用到如下图的公式,但是其实我觉得可以不用看这个公式,这个我可以自己完成,还是附上方便专家们理解,有劳了。

img

问题举例:
输入路段全长:2000m
第一段限速路段是:0-500m ,限速值是20km/h-30km/h
第二段限速路段是:500-1500m ,限速值是30km/h-40km/h
第三段限速路段是:1500-2000m ,限速值是25km/h-35km/h
然后他就生成如图

img

问题要点、难点:
1、为什么是大量绘制呢?因为加速度、限速值是一个区间,如上我假定的加速度是0.5-1.1m/s²,我取的步长是0.1,这样折线图中的第一段便有6种可能了,然后车辆达到指定限速值进行匀速行驶,这里的限速值假定是取20-26km/h,步长取1,这样便又是6种可能了。6*6,在第一段限速路段便有36种可能,以此类推,每一段都有几种可能,便是这个意思。
如图我绘制的三段限速路段的图,但是我想要的是限速路段的数量是可变的,不然有四段限速路段的时候就又要改代码。

img

2、以下我的代码比较简单,没有考虑那么多情况,因为实力有限,见谅。我的三段是直接考虑两端加速两段减速到终点的,但实际肯定不是这样,得考虑一下,诺后面一段的限速值比前一段大或者小,那么加速度便要考虑其正负,这个判定条件我不知道该怎么写。此外,代码中间寻找加速度与速度时间之间关系,我这段可能看起来会很绕,大概就是我用速度路程加速度求出时间,我觉得不重要,我用的描点法绘制的,重要的是如何生成这些数据。

img

代码中我是把数据储存到数据库中绘制了,绘制步骤的代码如下:

img

3、有一个难点一直困惑着我,因为我一直想着是一开始就输入是几段限速,这样段数便是一个变量,然后依据我上面代码的思路,这样我的for循环嵌套也是变量,百度了好久没不知道如何去掉for循环,或者控制for循环嵌套的层数。

本人交代:
因为这是我第一段自己接触的代码,是刚学习没多久,有很多思路可能奇奇怪怪,但是我是真的诚心学习,问题如果有描述不清楚的地方,请指正,谢谢。
不管是什么回答我都会认真思考回复的,感谢。

  • 写回答

1条回答 默认 最新

  • 广大菜鸟 2021-10-27 02:05
    关注

    把每段过程看成共性的函数,给这个函数传入前一段限速和后一段限速以及自己这段需要的长度,在这个函数内做好计算,有几段就调几次这个函数

    评论

报告相同问题?

问题事件

  • 系统已结题 11月3日
  • 赞助了问题酬金 10月28日
  • 赞助了问题酬金 10月27日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写