gensig

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

    Описание

    пример

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

    пример

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

    пример

    [u,t] = gensig(type,tau,Tf,Ts) генерирует сигнал с шагом расчета TsT запуски от 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) сигнал, применился к jth вводится на каждом временном шаге. Использовать gensig чтобы сгенерировать такую входную матрицу, создайте сигналы для каждого входа вместе и сложите их вместе в матрице.

    Например, создайте сигнал для симуляции 2D входной системы, которая вводит прямоугольную волну периода 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 симулировать модель с тремя входами. Сгенерируйте с тремя входами, 2D выходную модель в пространстве состояний, и симулируйте ответ при его двух выходных параметрах к 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
    Для просмотра документации необходимо авторизоваться на сайте