раздражения. Sinestream

Пакет: раздражения

Сигнал, содержащий серию синусоид

Синтаксис

input = frest.Sinestream(sys)
input = frest.Sinestream('OptionName',OptionValue)

Описание

input = frest.Sinestream(sys) создает сигнал с серией синусоид на основе динамики линейной системы sys.

input = frest.Sinestream('OptionName',OptionValue) создает сигнал с серией синусоид, где каждая частота синусоиды длится конкретное количество периодов, с помощью опций, заданных разделенными от запятой парами имя/значение.

Чтобы просмотреть график вашего входного сигнала, введите plot(input). Чтобы получить timeseries для вашего входного сигнала, используйте команду generateTimeseries.

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

sys

Линейная система для создания sinestream сигнализирует на основе динамических характеристик этой системы. Можно задать линейную систему на основе известной динамики с помощью tf, zpk или ss. Можно также получить линейную систему путем линеаризации нелинейной системы.

Получившийся сигнал sinestream автоматически устанавливает эти опции на основе линейной системы:

  • 'Frequency' является частотами, на которых линейная система имеет интересную динамику.

  • 'SettlingPeriods' является количеством периодов, это берет систему, чтобы достигнуть устойчивого состояния на каждой частоте в 'Frequency'.

  • 'NumPeriods' (3 + SettlingPeriods), чтобы гарантировать, что каждая частота волнует систему заданной амплитудой в течение по крайней мере трех периодов.

  • Для дискретных систем только, 'SamplesPerPeriod' установлен таким образом, что все частоты имеют тот же шаг расчета как линейная система.

Другие sinestream опции имеют значения по умолчанию.

'OptionName',OptionValue

Характеристики сигнала, заданные как разделенное от запятой имя опции и пары значения опции.

Имя опцииЗначение опции
'Frequency'

Частоты сигнала, заданные или как скаляр или как вектор значений частоты.

Значение по умолчанию: logspace(1,3,50)

'Amplitude'

Предупредите об амплитуде на каждой частоте, заданной как также:

  • Скаляр, чтобы установить все частоты на то же значение

  • Вектор, чтобы установить каждого частоты на различное значение

Значение по умолчанию: 1e-5

'SamplesPerPeriod'

Количество выборок в течение каждого периода для каждой частоты сигнала, заданной как также:

  • Скаляр, чтобы установить все частоты на то же значение

  • Вектор, чтобы установить каждого частоты на различное значение

Значение по умолчанию: 40

'FreqUnits'

Единицы частоты:

  • 'rad/s' — Радианы в секунду

  • 'Hz' — Герц

Значение по умолчанию: 'rad/s'

'RampPeriods'

Количество периодов для того, чтобы увеличить амплитуду каждой синусоиды к ее максимальному значению, заданному как также:

  • Скаляр, чтобы установить все частоты на то же значение

  • Вектор, чтобы установить каждого частоты на различное значение

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

Значение по умолчанию: 0

'NumPeriods'

Количество периодов каждая синусоида в максимальной амплитуде, заданной как также:

  • Скаляр, чтобы установить все частоты на то же значение

  • Вектор, чтобы установить каждого частоты на различное значение

Значение по умолчанию: max(3 - RampPeriods + SettlingPeriods, 2)

'SettlingPeriods'

Количество периодов, соответствующих переходному фрагменту моделируемого ответа на определенной частоте, перед системой, достигает устойчивого состояния, заданного как также:

  • Скаляр, чтобы установить все частоты на то же значение

  • Вектор, чтобы установить каждого частоты на различное значение

Прежде, чем выполнить оценку, frestimate отбрасывает это количество периодов от выходных сигналов.

Значение по умолчанию: 1

'ApplyFilteringInFRESTIMATE'

Выборочная частотой КИХ-фильтрация входного сигнала прежде, чем оценить частотную характеристику с помощью frestimate.

  • 'on' (значение по умолчанию)

  • 'off'

Для получения дополнительной информации см. алгоритм frestimate.

'SimulationOrder'

Порядок, в котором frestimate вводит отдельные частоты входного сигнала в вашу модель Simulink® во время симуляции.

  • 'Sequential' (значение по умолчанию) — frestimate вводит одну частоту после следующего в вашу модель в одном шаге расчета переменной использования симуляции Simulink. Чтобы использовать эту опцию, ваша модель Simulink должна использовать решатель переменного шага.

  • 'OneAtATime'frestimate вводит каждую частоту во время отдельной симуляции Simulink вашей модели. Перед каждой симуляцией frestimate инициализирует вашу модель Simulink к рабочей точке, заданной для оценки. Если вам установили Parallel Computing Toolbox™, можно запустить каждую симуляцию параллельно, чтобы ускорить оценку с помощью параллельных вычислений. Для получения дополнительной информации смотрите Убыстряющуюся Оценку Используя Параллельные вычисления.

Примеры

свернуть все

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

Чтобы задать частоты, используйте вектор частот.

freqs = linspace(1,4,4);

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

amps = [1 1.5 1.75 2];
ramp = 2;
settle = 3;
pds = 5;

input = frest.Sinestream('Frequency',freqs,...
                         'Amplitude',amps,...
                         'RampPeriods',ramp,...
                         'SettlingPeriods',settle,...
                         'NumPeriods',pds);

Исследуйте получившийся сигнал sinestream.

plot(input)

Когда ваш сигнал sinestream покрывает широкий спектр частот, это может быть неэффективно, чтобы использовать тот же шаг расчета через все частоты. По этой причине frest.Sinestream значением по умолчанию использует постоянное число выборок на каждой частоте. Можно указать, что номер со скалярным значением, или используют вектор, чтобы обеспечить различное количество выборок на каждой частоте. (Чтобы создать сигнал sinestream с фиксированным шагом расчета через целый сигнал, используйте frest.createFixedTsSinestream. Эта опция полезна, когда входная точка линеаризации для оценки находится на сигнале дискретного времени.)

Создайте синусоидальный входной сигнал со следующими характеристиками:

  • 50 частот, расположенных с интервалами логарифмически между 10 Гц и 1 000 Гц

  • Амплитуда 1e-3 на всех частотах

  • Выбранный с частотой 10 раз частота сигнала (значение десяти выборок на период)

input = frest.Sinestream('Amplitude',1e-3,...
                         'Frequency',logspace(1,3,50),...
                         'SamplesPerPeriod',10,...
                         'FreqUnits','Hz');

Создайте sinestream входной сигнал на основе динамики линейной системы. Этот подход полезен, когда вы используете оценку частотной характеристики, чтобы подтвердить линеаризацию вашей модели.

Откройте модель Simulink.

model = 'watertank';
open_system(model)

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

io(1)=linio('watertank/PID Controller',1,'input');
io(2)=linio('watertank/Water-Tank System',1,'openoutput');

watertank_spec = operspec(model);
opOpts = findopOptions('DisplayReport','off');
op = findop(model,watertank_spec,opOpts);

sys = linearize(model,op,io);

Создайте сигнал sinestream.

input = frest.Sinestream(sys);

frest.Sinestream выбирает частоты на основе системной динамики. Это также автоматически инициализирует другие параметры сигнала sinestream.

input
 
The sinestream input signal:
 
      Frequency           : [0.0015811;0.0026375;0.0043996;0.007339 ...] (rad/s)
      Amplitude           : 1e-05
      SamplesPerPeriod    : 40
      NumPeriods          : [4;4;4;4 ...]
      RampPeriods         : 0
      FreqUnits (rad/s,Hz): rad/s
      SettlingPeriods     : [1;1;1;1 ...]
      ApplyFilteringInFRESTIMATE (on/off)    : on
      SimulationOrder (Sequential/OneAtATime): Sequential
 

Можно изменить свойства сигнала с помощью записи через точку. Например, увеличьте амплитуду сигнала.

input.Amplitude = 3e-5
 
The sinestream input signal:
 
      Frequency           : [0.0015811;0.0026375;0.0043996;0.007339 ...] (rad/s)
      Amplitude           : 3e-05
      SamplesPerPeriod    : 40
      NumPeriods          : [4;4;4;4 ...]
      RampPeriods         : 0
      FreqUnits (rad/s,Hz): rad/s
      SettlingPeriods     : [1;1;1;1 ...]
      ApplyFilteringInFRESTIMATE (on/off)    : on
      SimulationOrder (Sequential/OneAtATime): Sequential
 

Представленный в R2009b