gensig

Создайте периодические сигналы для симуляции отклика системы с lsim

    Описание

    пример

    [u,t] = gensig(type,tau) генерирует периодический сигнал с единичной амплитудой с заданными типом и периодом. Используйте сигнал u и соответствующий временной вектор t для симуляции временной характеристики динамической системы с одним входом с помощью lsim или lsimplot или получить характеристики отклика с помощью lsiminfo. Чтобы создать сигналы для мультивходов, используйте повторные вызовы gensig и стекать полученную u векторы в матрицу. Когда вы используете u и t чтобы симулировать модель динамической системы, программное обеспечение интерпретирует t как имеющих модули TimeUnit свойство модели.

    пример

    [u,t] = gensig(type,tau,Tf) генерирует сигнал с длительностью Tf. t выполняется от 0 до Tf с шагами tau/64.

    пример

    [u,t] = gensig(type,tau,Tf,Ts) генерирует сигнал со шаг расчета Ts. t выполняется от 0 до Tf с шагами Ts. Чтобы сгенерировать сигнал для симуляции модели дискретного времени, используйте этот синтаксис и установите Ts во шаг расчета модели.

    Примеры

    свернуть все

    Сгенерируйте квадратную волну с периодом 2 с для симуляции динамической системы отклика с lsim.

    tau = 2;
    [u,t] = gensig("square",tau);

    gensig возвращает сигнал в виде вектора u и соответствующий временной вектор t. Когда вы не задаете длительность сигнала, gensig генерирует сигнал, который запускается в течение пяти периодов (Tf = 5*tau). Когда вы не задаете временной шаг, функция по умолчанию составляет 64 выборки за период (Ts = tau/64). Таким образом, этот сигнал работает в течение 10 с с временным шагом 0,03125 с. Постройте график сигнала.

    plot(t,u)

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

    gensig возвращает квадратную волну модуля амплитуды, которая начинается с нуля. Можно изменять u получить квадратную волну с другой амплитудой и различными конечными точками. Создайте квадратную волну периода 5, которая длится 15 с и которая переключается между значениями -1 и 1.

    tau = 5;
    Tf = 15;
    [u0,t] = gensig("square",tau,Tf);
    u = 2*u0-1;
    plot(t,u)

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

    Использование t и u для симуляции отклика динамической системы с lsim. The lsim команда принимает значения t находятся в модулях модели динамической системы, которую вы моделируете (sys.TimeUnit).

    sys = tf(30,[1 5 30]);
    lsim(sys,u,t)

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

    Если вы не задаете временной шаг (шаг расчета), gensig по умолчанию составляет 64 выборки за период или Ts = tau/64. Когда вы хотите симулировать модель в дискретном времени с lsim, временной шаг должен равняться шагу расчета модели. Обеспечивайте gensig с этим шагом расчета, чтобы сгенерировать подходящий сигнал. Для примера сгенерируйте синусоиду для симуляции дискретного времени динамической модели системы с шагом расчета 0,1 с.

    tau = 3;
    Tf = 6;
    Ts = 0.1;
    [u,t] = gensig("sine",tau,Tf,Ts);

    Симулируйте ответ модели на сгенерированный сигнал.

    sys = zpk([],[-0.1,-0.5],1,Ts);
    lsim(sys,u,t,Ts)

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

    Чтобы симулировать мультивход с lsimвходные сигналы предоставляются как матрица, столбцы которой представляют сигнал, приложенный к каждому входу. Другими словами, u(:,j) - сигнал, приложенный к jвторой вход на каждом временном шаге. Как использовать gensig чтобы сгенерировать такую матрицу входа, создайте сигналы для каждого входа вместе и сложите их в матрицу.

    Например, создайте сигнал для симуляции системы с двумя входами, которая вводит квадратную волну периода 2 с в первый вход и импульс каждые 1,5 с во второй вход. Задайте длительность и шаг расчета, чтобы два вектора имели одинаковую длину, которая необходима для объединения их в матрицу.

    Tf = 8;
    Ts = 0.02;
    [uSq,t] = gensig("square",2,Tf,Ts);
    [uPu,~]  = gensig("pulse",1.5,Tf,Ts);
    u = [uSq uPu];
    size(u)
    ans = 1×2
    
       401     2
    
    

    Каждая строка u(i,:) от u является ли сигнал (u1,u2) применяется к входам в соответствующий момент времени t(i).

    Можно объединить сигналы, которые не создаются с gensig при условии, что они имеют одинаковую длину. Например, предположим, что вы хотите симулировать систему с тремя входами путем применения uSq на первый вход и uPu ко второму входу. Вы также хотите применить пандус к третьему входу, который начинается с 0 и увеличивается до 1 в последнее время Tf = 8. Убедитесь, что сигнал является вектором-столбцом с той же длиной, что и uSq и uPu. Затем объедините его с другими сигналами, чтобы создать матрицу входа.

    uRa = linspace(0,1,401)'; 
    u = [uSq uPu uRa];
    size(u)
    ans = 1×2
    
       401     3
    
    
    plot(t,u)

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

    Теперь можно использовать u и t для симуляции модели с тремя входами. Сгенерируйте модель пространства состояний с тремя входами, двумя выходами и симулируйте ответ на двух выходах, чтобы u применяется на входах.

    rng('default')
    sys = rss(3,2,3);
    lsim(sys,u,t)

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

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

    свернуть все

    Тип генерируемого периодического сигнала, заданный как одно из следующего:

    • "sine" - Sine wave

    • "square" - Квадратная волна

    • "pulse" - Периодический импульс

    Все сигналы имеют единичную амплитуду и имеют начальное значение 0 в t = 0. Можно задать тип с вектором символов вместо строки (для примера 'sine').

    Период сгенерированного сигнала, заданный как положительная скалярная величина значение. Задайте tau в модули динамической модели системы, которые вы хотите симулировать с lsim. Для образца, если sys.TimeUnit является 'seconds', затем, чтобы сгенерировать сигнал для симуляции sys с периодом 30 с, установите tau до 30. Если sys.TimeUnit является 'minutes', затем, чтобы сгенерировать такой сигнал, установите tau до 0,5.

    Длительность сигнала для симуляции, заданная как положительная скалярная величина значение. Вектор выхода t имеет вид 0:Ts:Tf, где временной шаг устанавливается Ts. Когда вы используете t с lsim для симуляции динамической модели системы, lsim интерпретирует t с модулями, указанными в TimeUnit свойство модели.

    Временной шаг, заданный как положительная скалярная величина значение. Вектор выхода t имеет вид 0:Ts:Tf. Область модулей Ts являются ли модули, заданные TimeUnit динамическая система свойств, которую вы намерены симулировать с lsim. Когда вы симулируете модель в дискретном времени, задайте Ts равен шагу расчета Ts модели.

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

    свернуть все

    Сгенерированный сигнал, возвращенный как вектор-столбец той же длины, что и t. Форма сигнала определяется type. Сигнал имеет единичную амплитуду с базовой линией 0.

    Временной вектор, возвращенный как вектор-столбец формы 0:Ts:Tf. Если вы не задаете длительность Tf, затем gensig использует Tf = 5*tau. Если вы не задаете временной шаг Ts, затем gensig использует tau/64.

    См. также

    | |

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