杰尼龟啊 2021-10-26 15: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-26 18:05
    关注

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

    评论
    杰尼龟啊 2021-10-27 04:28

    有点听不懂😂

    回复
    编辑
    预览

    报告相同问题?

    问题事件

    • 系统已结题 11月2日
    • 赞助了问题酬金 10月28日
    • 赞助了问题酬金 10月27日
    • 创建了问题 10月26日
    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部