exponenta event banner

lsim

Постройте график моделируемой временной реакции динамической системы на произвольные входы; смоделированные данные ответа

Описание

Графики ответов

пример

lsim(sys,u,t) строит график смоделированной временной характеристики динамической модели системы sys в историю ввода (t,u). Вектор 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. The axes 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. The axes 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. The axes 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. The axes contains 2 objects of type line. These objects represent Driving inputs, sys.

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

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. The axes 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. The axes contains 3 objects of type line. These objects represent Driving inputs, PI, PID.

Первое LineSpec "r--" указывает пунктирную красную линию для ответа с PI-контроллером. Второе LineSpec "b" указывает сплошную синюю линию для ответа с контроллером PID. Легенда отражает заданные цвета и стили линий. Для получения дополнительных параметров настройки печати используйте lsimplot.

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

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

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

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. Axes 1 contains 3 objects of type line. These objects represent Driving inputs, sys. Axes 2 contains 3 objects of type line. These objects represent Driving inputs, sys. Axes 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. The axes 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-by-Ny-by-Nu, где Ny и Nu - количество выходов и входов динамической системы. Например, рассмотрим следующую модель состояния-пространства, представляющую систему с тремя состояниями с двумя входами и тремя выходами.

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. The axes 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. The axes 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 объект, который хранит данные оценки с одним входом и двумя выходами с временем выборки 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. Axes 1 contains 2 objects of type line. These objects represent Measured, Simulated. Axes 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 модели. (Для использования неопределенных моделей требуется программное обеспечение Toolbox™ надежного управления.)

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

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

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

  • Идентифицированные модели LTI, такие как idtf, idss, или idproc модели. Для определенных моделей можно также использовать sim , которая может вычислять стандартное отклонение моделируемых откликов и траекторий состояний. sim может также моделировать все типы моделей с ненулевыми начальными условиями и может моделировать нелинейно идентифицированные модели.

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

Если sys - массив моделей, функция отображает отклики всех моделей в массиве на одних и тех же осях. См. раздел Ответ систем в массиве модели (панель инструментов системы управления).

Входной сигнал для моделирования, заданный как вектор для систем с одним входом, и массив для систем с множеством входов.

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

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

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

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

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

Начальные значения состояния для моделирования модели state-space, заданной как вектор, имеющий по одной записи для каждого состояния в 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-й столбец y, или y(:,j), содержит ответ на j-ом выходе для u применяется на всех входах.

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

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

Совет

  • Если требуются дополнительные параметры настройки печати, используйте lsimplot вместо этого.

Алгоритмы

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

sys (z 1) = a0 + a1z 1 +... + anz n1 + b1z − 1 +... + bnz − n,

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

y [k] = a0u [k] +... + anu [k n] b1y [k − 1] −... − bn [k − n].

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

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

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

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

См. также

Функции

Приложения

Представлен в R2012a