записать динамический ограничитель скорости c блок функции Simulink в python - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь преобразовать функциональный блок simulink «ограничитель скорости Dynami c» в код python, и я получаю различный вывод между simulink и python. Ввод - массив 1d, шаг по времени - 0,1. (используемые входные сигналы точно такие же. Я взял сигналы из simulink и преобразовал их в массив numpy для использования в коде python)

  1. Я использую python3 .6
  2. для объяснения переменных, используемых ниже:
    • входной сигнал
    • скорость равна (y2-y1) / (x2-x1)
    • (x2-x1) есть time_step (= 0.1)
  3. ниже приведен код, который я использовал:

    rate= (signal[idx] - signal[idx-1]) / time_step
    if lower rate limit <= rate <= upper rate limit:`
        output[idx] = signal[idx]`
    elif rate > upper rate limit:`
        output[idx] = signal[idx-1] + time_step*upper rate limit`
    elif rate < lower rate limit:`
        output[idx] = signal[idx-1] + time_step*lower rate limit`
    

Когда я сравниваю входной сигнал и выходной сигнал, ограничение скорости применяется к выходному сигналу с использованием блока simulink, но не с python: входные и выходные сигналы точно такие же, без изменений.

Есть ли кто-нибудь, кто может сказать, что я делаю неправильно ? пожалуйста? Я был бы очень признателен, если бы кто-нибудь мог направить меня. Заранее большое спасибо!

...