exponenta event banner

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. 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" - Синусоидальная волна

    • "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