Шаговая функция в matplotlib

Я видел несколько вопросов о пошаговых функциях в matplotlib, но этот отличается. Вот моя функция:

def JerkFunction(listOfJerk):
    '''Return the plot of a sequence of jerk'''
    #initialization of the jerk
    x = np.linspace(0,5,4)
    y = listOfJerk #step signal

    plt.axis([0,5,-2,2])
    plt.step(x,y,'y') #step display
    plt.xlabel('Time (s)')
    plt.ylabel('Jerk (m/s^3)')

    plt.title('Jerk produced by the engine')

    return plt.show()

Я хотел бы получить кривую, когда я ставлюJerkFunction([1,1,-1,1]) но введя:[1,-1,1,-1]действительно, в начале, в реальном случае, значение рывка равно 0 и приt=0, это становитсяjerk=+1тогда вt=1 этоJerk=-1 etc.I»

 tacaswell05 окт. 2013 г., 02:39
Вы разобрались с этим?
 H. Vabri19 мая 2017 г., 13:31
Обратите внимание, что в документации говорится:: массив похож на 1-D последовательность, и предполагается, но не проверяется, что он равномерно увеличивается.
 Matt11 окт. 2012 г., 16:53
Я не совсем уверен, что вы пытаетесь сделать. Не могли бы вы уточнить свой вопрос?
 user70765011 окт. 2012 г., 17:07
В чем твоя проблема? Я вижу описание результата, но нетКажется, никаких проблем. Каковы ваши ожидания (например, для конкретного варианта использования), каковы фактические результаты?
 Matt11 окт. 2012 г., 18:01
ВашJerkFunction() Безразлично»на самом деле ничего не делать, и если весь этот блок кода не находится в функции, вашreturn plt.show() это синтаксическая ошибка

Ответы на вопрос(2)

Индекс ступенчатой функции Matlibplot 0, Проблема, с которой вы столкнулись, связана с тем, где step изменяет значение по отношению к значениям x (доктор).

Следующее демонстрирует три способа, которыми это может сделать это. Кривые смещены вертикально для ясности. Горизонтальные пунктирные линиинуль' а вертикальные пунктирные линии - ваши значения х.

x = np.linspace(0,5,3)
y = np.array([1,-1,1])

fig = plt.figure()
ax = fig.add_subplot(111)
ax.step(x,y,color='r',label='pre')
ax.step(x,y+3,color='b',label='post',where='post')
ax.step(x,y+6,color='g',label='mid',where='mid')
for j in [0,3,6]:
    ax.axhline(j,color='k',linestyle='--')
for j in x:
    ax.axvline(j,color='k',linestyle=':')
ax.set_ylim([-2,9])
ax.set_xlim([-1,6])
ax.legend()

ax.draw()

 tacaswell11 окт. 2012 г., 21:06
Зеленая кривая "середина»
 Ponzi12 окт. 2012 г., 10:05
Да, это синяя кривая, которая мне нужна, ткс. Теперь у меня есть функция шага и ее интегрирующий сигнал, функция треугольника. Есть идеи, как интегрировать мою функцию треугольника? потому что я вижу некоторую предопределенную функцию в scipy, но она возвращает числа, и мне нужна кривая, точнее параболы.
 tacaswell12 окт. 2012 г., 17:43
@Ponzi Если это ответило на ваш вопрос, вы должны принять этот ответ, а затем задать новый вопрос о том, как интегрировать функцию треугольника.

не ясно точно, что тыпытаюсь сделать, но я думаю, что это может привести к сюжету, который вы ищете. Если это не то, что вы ищете, вам будет легче помочь вам с дополнительной информацией.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,5,4)
y = [1,1,-1,1]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.step(x,y)
ax.set_xlabel('Time (s)')
ax.set_ylabel(r'Jerk ($m/s^3$)')
ax.set_ylim((-1.5,1.5))
ax.set_title('Jerk Produced by the Engine')

plt.show()

Ваш ответ на вопрос