Эквивалентная функция lsim от Matlab на Maxima - PullRequest
0 голосов
/ 04 мая 2018

Итак, я пытаюсь найти эквивалент для функции lsim в Maxima, пытаясь воспроизвести результаты из этого примера: https://www.mathworks.com/help/control/ref/lsim.html. Я использую библиотеку COMA, определил квадрат волновую функцию и умножили ее на те же передаточные функции, что и в первом примере ссылки выше, с использованием plot2d, но результаты полностью отличались от ожидаемых. Кто-нибудь знает подобную форму для lsim для использования на Maxima?

Мой код Максима:

load(coma);

h(t) := (1 + signum(t))/2;
unitBox(t) := h(t+1/2) - h(t - 1/2);
squareWave(t, t0, p, d) :=
       unitBox(mod((t-t0)/p,1)/2/d);
ft(t) := ilt((s-1)/(s^2+s+5), s, t);

resp(t) := ft(t)*squareWave(t,0,4,0.5);
plot2d(
  resp(t),
  [t,0,15]
);

1 Ответ

0 голосов
/ 04 мая 2018

Я предполагаю, что ft представляет единичную импульсную характеристику, а вы хотите, чтобы resp была реакцией на прямоугольную волну, верно? Если да, разве вы не хотите определить resp как свертку единичной импульсной характеристики и прямоугольной волны?

Я не очень знаком с COMA, поэтому мне пришлось бы искать, как вычислить свертку. Если вы согласны, что это то, что нужно, тогда мы можем это выяснить.

Кстати, другим было бы лучше понять проблему, если бы вы точно показали, каковы фактические и ожидаемые результаты, вместо того, чтобы предполагать, что они это выяснят. Я смог понять это, но в целом вы можете помочь другим помочь вам, явно указав, что было ожидаемым и фактическим.

...