lsim

Постройте диаграмму полюсов-нулей для пар ввода-вывода модели; данные смоделированной реакции системы

Описание

Графики отклика

пример

lsim(sys,u,t) строит симулированный ответ времени модели sys динамической системы к входной истории (tU). Векторный t задает выборки времени для симуляции. Для систем одно входа, входной сигнал u вектор из той же длины как t. Для мультивходных систем, u массив со столькими же строк, сколько существуют выборки времени (length(t)) и столько же столбцов сколько существует входные параметры к sys.

пример

lsim(sys,u,t,x0) далее задает векторный x0 из значений начального состояния, когда sys модель в пространстве состояний.

lsim(sys,u,t,x0,method) задает как lsim интерполирует входные значения между выборками, когда sys модель непрерывного времени.

пример

lsim(sys1,sys2,...,sysN,u,t,___) симулирует ответы нескольких моделей динамической системы к той же входной истории и строит эти ответы на одной фигуре. Все системы должны иметь то же количество вводов и выводов. Можно также использовать x0 и method входные параметры при вычислении ответов многоуровневых моделей.

пример

lsim(sys1,LineSpec1,...,sysN,LineSpecN,___) задает цвет, стиль линии и маркер для каждой системы в графике. Когда вам будут нужны дополнительные опции настройки графика, использовать lsimplot вместо этого.

Данные об ответе

пример

y = lsim(sys,u,t) возвращает отклик системы y, произведенный в те же времена t как вход. Для систем одно выхода, y вектор из той же длины как t. Для мультивыходных систем, y массив, имеющий столько же строк, сколько существуют выборки времени (length(t)) и столько же столбцов сколько существует выходные параметры в sys. Этот синтаксис не генерирует график.

y = lsim(sys,u,t,x0) далее задает векторный x0 из значений начального состояния, когда sys модель в пространстве состояний.

y = lsim(sys,u,t,x0,method) задает как lsim интерполирует входные значения между выборками, когда sys модель непрерывного времени.

пример

[y,tOut,x] = lsim(___) возвращает траектории состояния x, когда sys модель в пространстве состояний. x массив со столькими же строк, сколько существуют выборки времени и столько же столбцов, сколько существуют состояния в sys. Этот синтаксис также возвращает выборки времени, используемые для симуляции в tOut.

Линейный инструмент симуляции

lsim(sys) открывает Линейный Инструмент Симуляции. Для получения дополнительной информации об использовании этого инструмента для линейного анализа смотрите Работу с Линейным Инструментом Симуляции.

Примеры

свернуть все

Рассмотрите следующую передаточную функцию.

sys = tf(3,[1 2 3])
sys =
 
        3
  -------------
  s^2 + 2 s + 3
 
Continuous-time transfer function.

Чтобы вычислить ответ этой системы к произвольному входному сигналу, обеспечьте lsim с вектором времен t в котором вы хотите вычислить ответ и векторный u содержа соответствующие значения сигналов. Например, постройте отклик системы к сползающему сигналу шага, который запускается в 0 во время t = 0, пандусы от 0 в t = 1 к 1 в t = 2, и затем содержит устойчивый в 1. Задайте t и вычислите значения u.

t = 0:0.04:8;  % 201 points
u = max(0,min(t-1,1));

Используйте lsim без выходного аргумента, чтобы построить отклик системы к сигналу.

lsim(sys,u,t)
grid on

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Driving inputs, sys.

График показывает прикладной вход (u,t) в сером и отклике системы синего цвета.

Используйте lsim с выходным аргументом, чтобы получить данные о симулированном отклике.

y = lsim(sys,u,t);
size(y)
ans = 1×2

   201     1

Векторный y содержит симулированный отклик в соответствующие времена в t.

Используйте gensig создать периодические входные сигналы, такие как синусоиды и прямоугольные волны для использования с lsim. Симулируйте ответ на прямоугольную волну следующей модели в пространстве состояний SISO.

A = [-3 -1.5; 5 0];
B = [1; 0];
C = [0.5 1.5];
D = 0;
sys = ss(A,B,C,D);

В данном примере создайте прямоугольную волну с периодом 10 с и длительностью 20 с.

[u,t] = gensig("square",10,20);

gensig возвращает векторный t из временных шагов и векторного u содержа соответствующие значения входного сигнала. (Если вы не задаете шаг расчета для t, затем gensig генерирует 64 выборки на период.) Используют их с lsim и постройте отклик системы.

lsim(sys,u,t)
grid on

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Driving inputs, sys.

График отображает прикладную прямоугольную волну серым и отклик системы синего цвета. Вызовите lsim с выходным аргументом, чтобы получить значения отклика в каждой точке в t.

[y,~] = lsim(sys,u,t);

Когда вы симулируете ответ системы дискретного времени, временной вектор t должен иметь форму Ti:dT:Tf, где dT шаг расчета модели. Симулируйте ответ следующей передаточной функции дискретного времени к входу шага пандуса.

sys = tf([0.06 0.05],[1 -1.56 0.67],0.05);

Эта передаточная функция имеет шаг расчета 0,05 с. Используйте тот же шаг расчета, чтобы сгенерировать временной вектор t и сползавший шаг сигнализирует о u.

t = 0:0.05:4;  
u = max(0,min(t-1,1));

Постройте отклик системы.

lsim(sys,u,t)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Driving inputs, sys.

Чтобы симулировать ответ системы дискретного времени к периодическому входному сигналу, используйте тот же шаг расчета с gensig сгенерировать вход. Например, симулируйте отклик системы к синусоиде с периодом 1 с и длительностью 4 с.

[u,t] = gensig("sine",1,4,0.05);

Постройте отклик системы.

lsim(sys,u,t)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Driving inputs, sys.

lsim позволяет вам строить симулированные отклики нескольких динамических систем на той же оси. Например, сравните ответ с обратной связью системы с ПИ-контроллером и ПИД-регулятором. Создайте передаточную функцию системы и настройте контроллеры.

H = tf(4,[1 10 25]);
C1 = pidtune(H,'PI');
C2 = pidtune(H,'PID');

Сформируйте системы с обратной связью.

sys1 = feedback(H*C1,1);
sys2 = feedback(H*C2,1);

Постройте ответы обеих систем к прямоугольной волне с периодом 4 с.

[u,t] = gensig("square",4,12);
lsim(sys1,sys2,u,t)
grid on
legend("PI","PID")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Driving inputs, PI, PID.

По умолчанию, lsim выбирает разные цвета для каждой системы, которую вы строите. Можно задать цвета и стили линии с помощью LineSpec входной параметр.

 lsim(sys1,"r--",sys2,"b",u,t)
 grid on
 legend("PI","PID")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Driving inputs, PI, PID.

Первый LineSpec R задает пунктирную красную линию для ответа с ПИ-контроллером. Второй LineSpec B задает чисто синюю линию для ответа с ПИД-регулятором. Легенда отражает заданные цвета и стили линии. Для большего количества опций настройки графика используйте lsimplot.

В системе MIMO, на каждом временном шаге t, вход u(t) вектор, длина которого является количеством входных параметров. Использовать lsim, вы задаете u как матрица с размерностями Nt- Nu, где Nu количество системных входных параметров и Nt длина t. Другими словами, каждый столбец u входной сигнал, применился к соответствующему системному входу. Например, чтобы симулировать систему с четырьмя входными параметрами для 201 временного шага, обеспечьте u как матрица четырех столбцов и 201 строки, где каждая строка u(i,:) вектор из входных значений в iвременной шаг th; каждый столбец u(:,j) сигнал, примененный в jth вводится.

Точно так же выход y(t) вычисленный lsim матрица, столбцы которой представляют сигнал в каждой системе выход. Когда вы используете lsim построить симулированный отклик, lsim обеспечивает отдельные оси для каждого выхода, представляя отклик системы в каждом выходном канале к входу u(t) примененный во всех входных параметрах.

Рассмотрите 2D вход, модель в пространстве состояний с тремя выходами со следующими матрицами пространства состояний.

A = [-1.5  -0.2   1.0;
     -0.2  -1.7   0.6;
      1.0   0.6  -1.4];
  
B = [ 1.5  0.6;
     -1.8  1.0;
      0    0  ];

C = [ 0    -0.5 -0.1;
      0.35 -0.1 -0.15
      0.65  0    0.6];
  
D = [ 0.5  0;
      0.05 0.75
      0    0];

sys = ss(A,B,C,D);

Постройте ответ sys к прямоугольной волне периода 4 с, к которым применяются первый вход sys и импульс применился к второму входу каждые 3 с. Для этого создайте вектор-столбцы, представляющие прямоугольную волну и импульсный сигнал с помощью gensig. Затем сложите столбцы во входную матрицу. Чтобы гарантировать два сигнала имеют то же количество отсчетов, задают то же время окончания и шаг расчета.

Tf = 10;
Ts = 0.1;
[uSq,t] = gensig("square",4,Tf,Ts);
[uP,~] = gensig("pulse",3,Tf,Ts);
u = [uSq uP];
lsim(sys,u,t)

Figure contains 3 axes objects. Axes object 1 contains 3 objects of type line. These objects represent Driving inputs, sys. Axes object 2 contains 3 objects of type line. These objects represent Driving inputs, sys. Axes object 3 contains 3 objects of type line. These objects represent Driving inputs, sys.

Каждая ось показывает ответ одной из трех систем выходные параметры к сигналам u примененный во всех входных параметрах. Каждый график также отображает все входные сигналы серым.

По умолчанию, lsim симулирует модель, принимающую, что все состояния являются нулем в начале симуляции. При симуляции ответа модели в пространстве состояний используйте дополнительный x0 входной параметр, чтобы задать ненулевые значения начального состояния. Рассмотрите следующую модель в пространстве состояний SISO с двумя состояниями.

A = [-1.5 -3;
      3   -1];
B = [1.3; 0];
C = [1.15 2.3];
D = 0;
          
sys = ss(A,B,C,D);

Предположим, что вы хотите позволить системе развиваться из известного набора начальных состояний без входа в течение 2 с, и затем применять модульное ступенчатое изменение. Задайте векторный x0 из значений начального состояния, и создают входной вектор.

x0 = [-0.2 0.3];
t = 0:0.05:8;
u = zeros(length(t),1);
u(t>=2) = 1;
lsim(sys,u,t,x0)
grid on

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Driving inputs, sys.

Первая половина графика показывает свободную эволюцию системы от значений начального состояния [-0.2 0.3]. В t = 2 существует ступенчатое изменение к входу, и график показывает отклик системы этому новому сигналу, начинающемуся со значений состояния в то время.

Когда вы используете lsim с выходными аргументами это возвращает данные о симулированном отклике в массиве. Для системы SISO данные об ответе возвращены как вектор-столбец той же длины как t. Например, извлеките ответ системы SISO к прямоугольной волне. Создайте прямоугольную волну с помощью gensig.

sys = tf([2 5 1],[1 2 3]);
[u,t] = gensig("square",4,10,0.05);
[y,t] = lsim(sys,u,t);
size(y)
ans = 1×2

   201     1

Векторный y содержит симулированный отклик на каждом временном шаге в t. (lsim возвращает временной вектор t как удобство.)

Для системы MIMO данные об ответе возвращены в массиве размерностей N ny ню, где Ny и Ню являются количеством выходных параметров и входными параметрами динамической системы. Например, рассмотрите следующую модель в пространстве состояний, представляя систему с тремя состояниями двумя входными параметрами и тремя выходными параметрами.

A = [-1.5  -0.2   1.0;
     -0.2  -1.7   0.6;
      1.0   0.6  -1.4];
  
B = [ 1.5  0.6;
     -1.8  1.0;
      0    0  ];

C = [ 0   -0.1 -0.2;
      0.7 -0.2 -0.3
     -0.65 0   -0.6];
  
D = [ 0.1  0;
      0.1  1.5
      0    0];

sys = ss(A,B,C,D);

Извлеките ответы трех выходных каналов к прямоугольной волне, примененной в обоих входных параметрах.

uM = [u u];
[y,t] = lsim(sys,uM,t);
size(y)
ans = 1×2

   201     3

y(:,j) вектор-столбец, содержащий ответ при j-ом выходе к прямоугольной волне, к которой применяются оба входных параметров. Таким образом, y(i,:) вектор из трех значений, выходных значений на i-ом временном шаге.

Поскольку sys модель в пространстве состояний, можно извлечь эволюцию времени значений состояния в ответ на входной сигнал.

[y,t,x] = lsim(sys,uM,t);
size(x)
ans = 1×2

   201     3

Каждая строка x содержит значения состояния [x1,x2,x3] в соответствующее время в t. Другими словами, x(i,:) вектор состояния на i-ом временном шаге. Постройте значения состояния.

plot(t,x)

Figure contains an axes object. The axes object contains 3 objects of type line.

Ответ Графика в качестве примера Нескольких Систем к Тому же Входу показывает, как построить ответы нескольких отдельных систем на одной оси. То, когда у вас есть несколько динамических систем, расположило в массиве моделей, lsim графики все их ответы целиком.

Создайте массив моделей. В данном примере используйте одномерный массив передаточных функций второго порядка, имеющих различные собственные частоты. Во-первых, предварительно выделите память для массива моделей. Следующая команда создает строку 1 на 5 нулевого усиления передаточные функции SISO. Первые две размерности представляют выходные параметры модели и входные параметры. Остальные измерения являются измерениями массива. (Для получения дополнительной информации о массивах моделей и как создать их, смотрите Массивы моделей.)

sys = tf(zeros(1,1,1,5));

Заполните массив.

w0 = 1.5:1:5.5;    % natural frequencies
zeta = 0.5;        % damping constant
for i = 1:length(w0)
   sys(:,:,1,i) = tf(w0(i)^2,[1 2*zeta*w0(i) w0(i)^2]);
end

Постройте ответы всех моделей в массиве к входу прямоугольной волны.

[u,t] = gensig("square",5,15);
lsim(sys,u,t)

Figure contains an axes object. The axes object contains 6 objects of type line. These objects represent Driving inputs, sys.

lsim использует тот же стиль линии для ответов всех записей в массиве. Один способ различать записи состоит в том, чтобы использовать SamplingGrid свойство моделей динамической системы сопоставить каждую запись в массиве с соответствующим w0 значение.

sys.SamplingGrid = struct('frequency',w0);

Теперь, когда вы строите ответы в графическом окне MATLAB, можно кликнуть по трассировке, чтобы видеть, какому значению частоты это соответствует.

Загрузите данные об оценке, чтобы оценить модель.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata'));
z = iddata(y,u,0.1,'Name','DC-motor');

z iddata объект, который хранит 2D выходные данные об оценке с одним входом с шагом расчета 0,1 с.

Оцените модель в пространстве состояний порядка 4 с помощью данных об оценке z.

[sys,x0] = n4sid(z,4);

sys предполагаемая модель и x0 предполагаемые начальные состояния.

Симулируйте ответ sys использование тех же входных данных как тот, используемый для оценки и начальных состояний, возвращенных командой оценки.

[y,t,x] = lsim(sys,z.InputData,[],x0);

Здесь, y отклик системы, t временной вектор, используемый для симуляции и x траектория состояния.

Сравните симулированный отклик y к измеренному отклику z.OutputData для обоих выходных параметров.

subplot(211), plot(t,z.OutputData(:,1),'k',t,y(:,1),'r')
legend('Measured','Simulated')
subplot(212), plot(t,z.OutputData(:,2),'k',t,y(:,2),'r')
legend('Measured','Simulated')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Measured, Simulated. Axes object 2 contains 2 objects of type line. These objects represent Measured, Simulated.

Выбор шага расчета может решительно влиять на результаты симуляции. Чтобы проиллюстрировать почему, рассмотрите следующую модель второго порядка.

sys(s)=ω2s2+2s+ω2,ω=62.83.

Симулируйте ответ этой модели к прямоугольной волне с периодом 1 с, с помощью шага расчета 0,1 с.

w2 = 62.83^2;
sys = tf(w2,[1 2 w2]);

tau = 1;
Tf = 5;
Ts = 0.1;
[u,t] = gensig("square",tau,Tf,Ts);
lsim(sys,u,t)

lsim warning message: The input signal is undersampled.

lsim симулирует модель с помощью заданного входного сигнала, но это выдает предупреждение, что входной сигнал субдискретизируется. lsim рекомендует шаг расчета, который генерирует по крайней мере 64 выборки на период входа u. Чтобы видеть, почему эта рекомендация имеет значение, симулируйте sys снова с помощью шага расчета, меньшего, чем рекомендуемый максимум.

figure
Ts2 = 0.01;
[u2,t2] = gensig("square",tau,Tf,Ts2);
lsim(sys,u2,t2)

Этот ответ предоставляет сильное колебательное поведение, которое скрыто в субдискретизируемой версии.

Входные параметры

свернуть все

Динамическая система в виде SISO или модели динамической системы MIMO или массива моделей динамической системы. Динамические системы, ответы которых можно симулировать, включают:

  • Непрерывное время или дискретное время числовые модели LTI, такие как tf, zpk, или ss модели.

  • Обобщенные или неопределенные модели LTI, такие как genss или uss модели. (Используя неопределенные модели требует программного обеспечения Robust Control Toolbox™.)

    • Для настраиваемых блоков системы управления функция оценивает модель в своем текущем значении и для строящих и для возвращающихся данных об ответе.

    • Для неопределенных блоков системы управления, графики функций номинальная стоимость и случайные выборки модели. Когда вы используете выходные аргументы, функция возвращает данные об ответе для номинальной модели только.

  • Разреженные модели в пространстве состояний, такие как sparss и mechss модели.

  • Идентифицированные модели LTI, такие как idtf, idss, или idproc модели. Для идентифицированных моделей можно также использовать sim Команда (System Identification Toolbox), которая может вычислить стандартное отклонение симулированного отклика и утвердить траектории. sim может также симулировать все типы моделей с ненулевыми начальными условиями и может симулировать нелинейные идентифицированные модели. (Используя идентифицированные модели требует программного обеспечения System Identification Toolbox™.)

lsim не поддерживает модели данных частотной характеристики такой как frd, genfrd, или idfrd модели.

Если sys массив моделей, графики функций ответы всех моделей в массиве на тех же осях. Смотрите Ответ Систем в Массиве моделей.

Входной сигнал для симуляции в виде вектора для систем одно входа и массива для мультивходных систем.

  • Для систем одно входа, u вектор из той же длины как t.

  • Для мультивходных систем, u массив со столькими же строк, сколько существуют выборки времени (length(t)) и столько же столбцов сколько существует входные параметры к sys. Другими словами, каждая строка u(i,:) представляет значения, примененные во входных параметрах sys во время t(i). Каждый столбец u(:,j) сигнал, применился к jвход th sys.

Выборки времени, на которых можно вычислить ответ в виде вектора из формы 0:dT:Tf. lsim команда интерпретирует t как определение модулей в TimeUnit свойство модели sys.

В течение непрерывного времени sys, lsim команда использует временной шаг dT дискретизировать модель. Если dT является слишком большим относительно системной динамики (субдискретизация), lsim выдает предупреждение, рекомендующее более быстрое время выборки. Для дальнейшего обсуждения удара времени выборки на симуляции смотрите Эффект Шага расчета на Симуляции.

В течение дискретного времени sys, временной шаг dT должен равняться шагу расчета sys. В качестве альтернативы можно не использовать t или набор это к []. В этом случае, lsim наборы t к вектору из той же длины как u это начинается в 0 с временного шага, равного sys.Ts.

Значения начального состояния для симуляции модели в пространстве состояний в виде вектора, имеющего одну запись для каждого состояния в sys. Если вы не используете этот аргумент, то lsim обнуляет все состояния в t = 0.

Метод дискретизации для выборки моделей непрерывного времени в виде одного из следующих.

  • 'zoh' — Нулевой порядок содержит

  • 'foh' — Хранение первого порядка

Когда sys модель непрерывного времени, lsim вычисляет ответ времени путем дискретизации модели с помощью шага расчета, равного временному шагу dT = t(2)-t(1) из t. Если вы не задаете метод дискретизации, то lsim выбирает метод автоматически на основе гладкости u сигнала. Для получения дополнительной информации об этих двух методах дискретизации, см. Непрерывно-дискретные Методы Преобразования.

Стиль линии, маркер и цвет в виде строки или вектора из один, два, или три символа. Символы могут появиться в любом порядке. Вы не должны задавать все три характеристики (стиль линии, маркер и цвет). Например, если вы не используете стиль линии и задаете маркер, затем график показывает только маркер и никакую линию. Для получения дополнительной информации о конфигурировании этого аргумента, смотрите LineSpec входной параметр plot функция.

Пример: 'r--' задает красную пунктирную линию

Пример: '*b' задает синие маркеры звездочки

Пример: 'y' задает желтую линию

Выходные аргументы

свернуть все

Данные о симулированном отклике, возвращенные как массив.

  • Для систем одно входа, y вектор-столбец той же длины как t.

  • Для мультивыходных систем, y массив со столькими же строк, сколько существуют выборки времени (length(t)) и столько же столбцов сколько существует выходные параметры в sys. Таким образом, j th столбец y, или y(:,j), содержит ответ в j th выход к u примененный во всех входных параметрах.

Временной вектор используется для симуляции, возвращенной как вектор-столбец. Когда вы задаете входной временной вектор t из формы 0:dT:Tf, затем tOut = t. Если t почти equisampled, lsim настраивает шаги расчета для симуляции и возвращает результат в tOut. В течение дискретного времени sys, можно не использовать t или набор это к []. В этом случае, lsim наборы t к вектору из той же длины как u это начинается в 0 с временного шага, равного sys.Ts, и возвращает результат в tOut.

Траектории состояния, возвращенные как массив. Когда sys модель в пространстве состояний, x содержит эволюцию состояний sys в ответ на вход. x массив со столькими же строк, сколько существуют выборки времени (length(t)) и столько же столбцов сколько существует состояния в sys.

Советы

  • Когда вам будут нужны дополнительные опции настройки графика, использовать lsimplot вместо этого.

Алгоритмы

Для передаточной функции дискретного времени,

sys(z1)=a0+a1z1++anzn1+b1z1++bnzn,

lsim фильтрует вход на основе рекурсии, сопоставленной с этой передаточной функцией:

y[k]=a0u[k]++anu[kn]b1y[k1]bn[kn].

В течение дискретного времени zpk модели, lsim пропускает вход через серию первого порядка или секций второго порядка. Этот подход старается не формировать полином числителя и полином знаменателя, который может вызвать числовую нестабильность для моделей высшего порядка.

Для моделей в пространстве состояний дискретного времени, lsim распространяет уравнения пространства состояний дискретного времени,

x[n+1]=Ax[n]+Bu[n],y[n]=Cx[n]+Du[n].

Для систем непрерывного времени, lsim сначала дискретизирует системное использование c2d, и затем распространяет получившиеся уравнения пространства состояний дискретного времени. Если вы не задаете в противном случае с method входной параметр, lsim использует метод дискретизации задержки первого порядка, когда входной сигнал является гладким, и нулевой порядок содержит, когда входной сигнал прерывист, такой что касается импульсов или прямоугольных волн. Шаг расчета для дискретизации является интервалом dT между выборками времени вы предоставляете в t.

Смотрите также

Функции

Приложения

Представлено до R2006a