Моделируйте ответ времени динамической системы к произвольным входным параметрам
lsim(sys,u,t)
lsim(sys,u,t,x0)
lsim(sys,u,t,x0,method)
lsim(sys1,...,sysn,u,t)
lsim(sys1,LineSpec1,...,sysN,LineSpecN,u,t)
y = lsim(___)
[y,t,x] = lsim(___)
lsim(sys)
lsim
моделирует (время) ответ непрерывных или дискретных линейных систем к произвольным входным параметрам. Когда вызвано без левых аргументов, lsim
строит ответ на экране.
lsim(sys,u,t)
производит график ответа времени модели sys
динамической системы к входной истории, t
, u
. Векторный t
задает выборки времени для симуляции (в модулях системного времени, заданных в свойстве TimeUnit
sys
), и состоит из расположенных с равными интервалами выборок времени:
t = 0:dt:Tfinal
Вход u
является массивом, имеющим столько же строк сколько выборки времени (length(t)
) и столько же столбцов сколько системные входные параметры. Например, если sys
является системой SISO, то u
является t-1 вектором. Если sys
имеет три входных параметров, то u
является t-3 массивом. Каждая строка u(i,:)
задает входное значение (значения) в то время демонстрационный t(i)
. u
сигнала также появляется на графике.
Модель sys
может быть непрерывной или дискретной, SISO или MIMO. В дискретное время u
должен быть выбран на том же уровне как система. В этом случае вход t
избыточен и может быть не использован или установлен в пустую матрицу. В непрерывное время временная выборка dt = t(2)-t(1)
используется, чтобы дискретизировать непрерывную модель. Если dt
является слишком большим (субдискретизация), lsim
выдает предупреждение, предлагающее, чтобы вы использовали более соответствующий шаг расчета, но использовали заданный шаг расчета. См. Алгоритмы для обсуждения шагов расчета.
lsim(sys,u,t,x0)
далее задает начальное условие x0
для системных состояний. Этот синтаксис применяется только, когда sys
является моделью в пространстве состояний. x0
является вектором, записи которого являются начальными значениями соответствующих состояний sys
.
lsim(sys,u,t,x0,method)
явным образом задает, как входные значения должны быть интерполированы между выборками, когда sys
является непрерывно-разовой системой. Задайте method
как одно из следующих значений:
'zoh'
— Нулевой порядок использования содержит
'foh'
— Используйте линейную интерполяцию (хранение первого порядка)
Если вы не задаете метод, lsim
выбирает метод интерполяции автоматически на основе гладкости u
сигнала.
lsim(sys1,...,sysn,u,t)
моделирует ответы нескольких моделей динамической системы к той же входной истории t
, u
и строит эти ответы на одной фигуре. Можно также использовать x0
и входные параметры method
при вычислении ответов многоуровневых моделей.
lsim(sys1,LineSpec1,...,sysN,LineSpecN,u,t)
задает стиль линии, маркер и цвет каждого из откликов системы в графике. Можно также использовать x0
и входные параметры method
с этим синтаксисом. Каждый аргумент LineSpec
задан как вектор один, два, или три символа. Символы могут появиться в любом порядке. Например, следующий код строит ответ sys1
как желтая пунктирная линия и ответ sys2
как зеленая пунктирная линия:
lsim(sys1,'y:',sys2,'g--',u,t,x0)
Для получения дополнительной информации о конфигурировании этого аргумента, смотрите входной параметр LineSpec
функции plot
.
y = lsim(___)
возвращает отклик системы y
, выбранный в те же времена как вход (t
). Вывод y
является массивом, имеющим столько же строк сколько выборки времени (length(t)
) и столько столбцов сколько система выходные параметры. Никакой график не построен на экране. Можно использовать этот синтаксис с любым из входных параметров, описанных в предыдущих синтаксисах кроме аргументов LineSpec
.
[y,t,x] = lsim(___)
также возвращает временной вектор t
, используемый для симуляции и траекторий состояния x
(только для моделей в пространстве состояний). Вывод x
имеет столько же строк сколько выборки времени (length(t)
) и столько же столбцов сколько системные состояния. Можно использовать этот синтаксис с любым из входных параметров, описанных в предыдущих синтаксисах кроме аргументов LineSpec
.
lsim(sys)
открывает Линейный графический интерфейс пользователя Инструмента Симуляции. Для получения дополнительной информации о работе с этим графический интерфейсом пользователя, смотрите Работу с Линейным Инструментом Симуляции.
Системы дискретного времени моделируются с ltitr
(пространство состояний) или filter
(передаточная функция и нули и полюса).
Непрерывно-разовые системы дискретизируются с c2d
с помощью или 'zoh'
или метода 'foh'
('foh'
используется для сглаженных входных сигналов и 'zoh'
для прерывистых сигналов, таких как импульсы или прямоугольные волны). Шаг расчета установлен в интервал dt
между предоставленными пользователями выборками времени t
.
Выбор шага расчета может решительно влиять на результаты симуляции. Чтобы проиллюстрировать почему, рассмотрите модель второго порядка
Чтобы моделировать его ответ на прямоугольную волну с периодом 1 секунда, можно продолжить можно следующим образом:
w2 = 62.83^2; h = tf(w2,[1 2 w2]); t = 0:0.1:5; % vector of time samples u = (rem(t,1) >= 0.5); % square wave values lsim(h,u,t)
lsim
оценивает заданный шаг расчета и выдает предупреждение:
Warning: Input signal is undersampled. Sample every 0.016 sec or faster.
Чтобы изменить к лучшему этот ответ, дискретизируйте H (s) с помощью рекомендуемого шага расчета:
dt = 0.016; ts = 0:dt:5; us = (rem(ts,1) >= 0.5); hd = c2d(h,dt); lsim(hd,us,ts)
Этот ответ показывает сильное колебательное поведение, которое скрыто в субдискретизируемой версии.