Sine Wave Function

Сгенерируйте синусоиду, с помощью внешнего сигнала в качестве источника времени

  • Библиотека:
  • Simulink / Математические операции

  • Sine Wave Function block

Описание

Функциональный блок Sine wave выводит синусоидальную форму волны. Блок может действовать в основанном на времени или основанном на выборке режиме.

Примечание

Этот блок совпадает с блоком Sine Wave, который появляется в библиотеке Math Operations. Если вы выбираете Use simulation time для параметра Time в диалоговом окне блока вы получаете блок Sine Wave Function.

Основанный на времени режим

Блок вычисляет выходную форму волны.

y=amplitude×sin(frequency×time+phase)+bias.

В основанном на времени режиме значение параметра Sample time определяет, действует ли блок в непрерывном режиме или дискретном режиме.

  • 0 (значение по умолчанию), заставляет блок действовать в непрерывном режиме.

  • >0 заставляет блок действовать в дискретном режиме.

Для получения дополнительной информации см. Настройку времени выборки.

Блокируйте поведение в непрерывном режиме

При работе в непрерывном режиме блок Sine Wave может стать неточным из-за потери точности, как время становится очень большим.

Блокируйте поведение в дискретном режиме

Значение параметров Sample time, больше, чем нуль, заставляет блок вести себя, как будто это управляло блоком Zero-Order Hold, шаг расчета которого установлен в то значение.

Таким образом, можно создать модели с источниками синусоиды, которые чисто дискретны, а не модели, которые являются гибридными непрерывными/дискретными системами. Гибридные системы являются по сути более комплексными и в результате занимают больше времени, чтобы симулировать.

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

Дифференциальный инкрементный алгоритм вычисляет синус на основе значения, вычисленного в предыдущем шаге расчета. Этот метод использует следующие тригонометрические тождества:

sin(t+Δt)=sin(t)cos(Δt)+sin(Δt)cos(t)cos(t+Δt)=cos(t)cos(Δt)sin(t)sin(Δt)

В матричной форме эти тождества:

[sin(t+Δt)cos(t+Δt)]=[cos(Δt)sin(Δt)sin(Δt)cos(Δt)][sin(t)cos(t)]

Поскольку Δt является постоянным, следующее выражение является константой:

[cos(Δt)sin(Δt)sin(Δt)cos(Δt)]

Поэтому проблема становится одним из умножения матриц значения sin(t) постоянной матрицей, чтобы получить sin(t+Δt).

Дискретный режим уменьшает, но не устраняет накопление ошибок округления, например, (4*eps). Это накопление может произойти, потому что расчет блока выход на каждом временном шаге зависит от значения выхода на предыдущем временном шаге.

Методы, чтобы обработать ошибки округления в дискретном режиме

Чтобы обработать ошибки округления, когда Sine Wave block будет действовать в основанном на времени дискретном режиме, используйте один из этих методов.

МетодОбъяснение

Вставьте блок Saturation, непосредственно нисходящий из блока Sine Wave.

Путем установления пределов насыщения для блока Sine Wave выход можно удалить перерегулирование из-за накопления ошибок округления.

Настройте блок Sine Wave, чтобы использовать sin() математическая библиотечная функция, чтобы вычислить блокирует выход.

  1. На диалоговом окне блока Sine wave, набор Time к Use external signal так, чтобы входной порт появился на значке блока.

  2. Соедините сигнал часов с этим входным портом с помощью блока Digital Clock.

  3. Установите шаг расчета сигнала часов к шагу расчета блока Sine Wave.

sin() математическая библиотечная функция вычисляет, блокируют выход на каждом временном шаге независимо от выходных значений от других временных шагов, предотвращая накопление ошибок округления.

Основанный на выборке режим

Основанный на выборке режим использует эту формулу, чтобы вычислить выход блока Sine Wave.

y=Asin(2π(k+o)/p)+b

  • A является амплитудой синусоиды.

  • p является количеством выборок времени на период синусоиды.

  • k является повторяющимся целочисленным значением, которое лежит в диапазоне от 0 до p –1.

  • o является смещением (сдвиг фазы) сигнала.

  • b является смещением сигнала.

В этом режиме Simulink® устанавливает k, равный 0 на первом временном шаге и вычисляет блок выход, с помощью формулы. На следующем временном шаге Simulink постепенно увеличивает k и повторно вычисляет выход блока. Когда k достигает p, Simulink сбрасывает k к 0 прежде, чем вычислить блок выводится. Этот процесс продолжается до конца симуляции.

Основанный на выборке метод вычислительного блока, выход в установленный срок продвигается, не зависит от выхода предыдущих временных шагов. Поэтому этот режим избегает накопления ошибок округления. Основанный на выборке режим поддерживает семантику сброса в подсистемах, которые предлагают его. Например, если блок Sine Wave находится в восстановленной подсистеме, которая получает триггер сброса, повторяющийся целочисленный k сброс и блок выводят сброс к его начальному условию.

Порты

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

развернуть все

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

Типы данных: double

Вывод

развернуть все

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

Типы данных: double

Параметры

развернуть все

Задайте тип синусоиды, которую генерирует этот блок. Некоторые параметры в диалоговом окне появляются в зависимости от того, выбираете ли вы основанный на времени или основанный на выборке.

Программируемое использование

Параметры блоков: SineType
Ввод: символьный вектор
Значения: 'Time based' | 'Sample based'
Значение по умолчанию: 'Time based'

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

Программируемое использование

Параметры блоков: TimeSource
Ввод: символьный вектор
Значения: 'Use simulation time' | 'Use external signal'
Значение по умолчанию: 'Use external signal'

Задайте амплитуду выходного синусоидального сигнала.

Программируемое использование

Параметры блоков: Amplitude
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '1'

Задайте постоянное значение, добавленное к синусу, чтобы произвести выход.

Программируемое использование

Параметры блоков: Bias
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

Задайте частоту в радианах в секунду.

Зависимость

Чтобы включить этот параметр, установите Sine type на Time based.

Программируемое использование

Параметры блоков: Frequence
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '1'

Задайте сдвиг фазы синусоиды.

Вы не можете сконфигурировать этот параметр, чтобы появиться в сгенерированном коде как настраиваемая глобальная переменная, если вы устанавливаете Time (t) на Use simulation time. Например, если вы устанавливаете Default parameter behavior на Tunable или примените класс памяти к Simulink.Parameter объект, параметр Phase не появляется в сгенерированном коде как настраиваемая глобальная переменная.

Чтобы сгенерировать код так, чтобы можно было настроить фазу во время выполнения, установите Time (t) на Use external signal. Можно обеспечить собственный входной сигнал времени или использовать блок Digital Clock, чтобы сгенерировать сигнал времени. Для примера смотрите Параметр Фазы Мелодии Блока Sine wave Во время Выполнения кода (Simulink Coder).

Зависимости

Чтобы включить этот параметр, установите Sine type на Time based.

Программируемое использование

Параметры блоков: Phase
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

Задайте количество выборок на период.

Зависимости

Чтобы включить этот параметр, установите Sine type на Sample based.

Программируемое использование

Параметры блоков: Samples
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '10'

Задайте смещение (дискретный сдвиг фазы) в количестве шагов расчета.

Зависимости

Чтобы включить этот параметр, установите Sine type на Sample based.

Программируемое использование

Параметры блоков: Offset
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

Задайте период расчета в секундах. Значением по умолчанию является 0. Если тип синуса основан на выборке, шаг расчета должен быть больше 0. См. Настройку времени выборки.

Программируемое использование

Параметры блоков: SampleTime
Ввод: символьный вектор
Значение: скаляр
Значение по умолчанию: '0'

Задайте выходные размерности, чтобы быть 1D векторным сигналом, когда другие параметры будут матрицами с одним столбцом и с одной строкой. Если вы не выбираете это поле, блок выводит сигнал той же размерности как числовые параметры. Смотрите Определяют Выходные Размерности Исходных блоков. Этот параметр не доступен, когда внешний сигнал задает время. В этом случае, если числовые параметры являются столбцом или матричными значениями строки, выход является 1D вектором.

Программируемое использование

Параметры блоков: VectorParams1D
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'on'

Примеры модели

Характеристики блока

Типы данных

double

Прямое сквозное соединение

yes

Многомерные сигналы

no

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

Расширенные возможности

Смотрите также

|

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