Trigonometric Function

Заданная тригонометрическая функция на входе

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

    HDL-кодер/математические операции

  • Trigonometric Function block

Описание

Блок Trigonometric Function выполняет общие тригонометрические функции и выводит результат в рад или rev.

Поддерживаемые функции

Можно выбрать одну из этих функций из списка Function параметров.

ФункцияОписаниеМатематическое выражение MATLAB® Эквивалентный
sin

Синус входа

sin (u)

sin
cos

Косинус входа

cos (u)

cos
tan

Тангенс входа

tan (u)

tan
asin

Арксинус входа

asin (u)

asin
acos

Обратный косинус входа

acos (u)

acos
atan

Обратный тангенс входа

atan (u)

atan
atan2

Обратный тангенс входного входа с четырьмя квадрантами

atan2 (u)

atan2
sinh

Гиперболический синус входа

sinh (u)

sinh
cosh

Гиперболический косинус входа

cosh (u)

cosh
tanh

Гиперболический тангенс входа

танх (u)

tanh
asinh

Обратный гиперболический синус входа

asinh (u)

asinh
acosh

Обратный гиперболический косинус входа

acosh (u)

acosh
atanh

Обратный гиперболический тангенс входа

атанх (u)

atanh
sincos

Синус входа; косинус входа

cos + jsin

Комплексная экпонента входа

Приближение CORDIC

Если вы используете метод приближения CORDIC (см. «Подробнее»), вход блока имеет дополнительные требования.

Когда вы задаете Function sin, cos, sincos, или cos + jsin и установите Approximation method равным CORDICблок имеет следующие ограничения:

  • Когда вы используете знаковые типы с фиксированной точкой, входной угол должен попадать в диапазон [-2

  • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0, 2в) рад.

Когда вы задаете Function atan2 и Approximation method для CORDICблок имеет следующие ограничения:

  • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

  • Оба входа должны иметь совпадающий тип данных.

  • Когда вы используете signed фиксированных точек, размер слова должен быть 126 или меньше.

  • При использовании неподписанных фиксированных точек размер слова должна быть 125 или меньше.

Эта таблица результирует для недопустимого входа.

Использование блоковЭффект недопустимого входа
Режимы симуляцииПоявится сообщение об ошибке.
Сгенерированный кодПроисходит неопределенное поведение. Избегайте полагаться на неопределенное поведение для сгенерированного кода.

Метод интерполяционного приближения

Когда вы устанавливаете Function на sin, cos, sincos, или cos + jsin и установите Approximation method равным Lookupблок имеет следующие ограничения:

  • Когда вы используете подписанные фиксированные точки, входной угол должен попадать в область значений [- 2ᴨ,2ᴨ] рад .

  • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0,2ᴨ) рад.

  • Когда вы устанавливаете Function на atan2 и Approximation method для Lookupблок имеет следующие ограничения:

    • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

    • Оба входа должны иметь совпадающий тип данных.

    • Количество точек данных ограничено:

      • smallEnoughNumDataPoints = 2(inputFractionLen-2)+1

      • bigEnoughFractionLen = log2(numberOfDataPoints - 1)+2

      где:

      • smallEnoughNumDataPoints - максимальное количество точек данных, представленное заданной входом дроби, inputFractionLen.

      • bigEnoughFractionLen - минимальная длина дроби, необходимая для представления заданного количества точек данных, numberOfDataPoints.

Порты

Вход

расширить все

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

ФункцииВходные данные
  • sin

  • cos

  • sincos

  • cos + jsin

  • atan2

  • Плавающая точка

  • Фиксированная точка (только когда Approximation method CORDIC)

  • tan

  • asin

  • acos

  • atan

  • sinh

  • cosh

  • tanh

  • asinh

  • acosh

  • atanh

  • Плавающая точка

Зависимости

  • Когда вы задаете Function atan2блок показывает два входных порта. Первый вход (Port_1) является y осью или мнимой частью аргумента функции. Второй вход (Port_2) является осью x или вещественной частью аргумента функции.

  • Можно использовать входные сигналы с плавающей точкой, когда вы задаете Approximation method None, CORDIC, или Lookup. Однако тип выходных данных блока зависит от того, какой из этих опций метода приближения вы выберете.

    Тип входных данныхМетод приближенияВыход данных

    Плавающая точка

    None

    Зависит от вашего выбора для Output signal type. Опции auto (совпадающий тип данных, что и вход), real, или complex.

    Плавающая точка

    CORDIC

    То же, что и вход. Output signal type недоступно, когда вы используете метод CORDIC приближения для вычисления выхода блока.

    Плавающая точка

    Lookup

    То же, что и вход. Output signal type недоступно, когда вы используете метод Интерполяционного приближения для вычисления выхода блока.

Для CORDIC и интерполяционных приближений:

  • Вход должен быть вещественным для sin, cos, sincos, cos + jsin, и atan2 функций.

  • Выход действителен для sin, cos, sincos, и atan2 функций.

  • Выход комплексен для cos + jsin функция.

Ограничения

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

Входные сигналы с фиксированной точкой можно использовать только, когда Approximation method установлено на CORDIC или Lookup. CORDIC и интерполяционные приближения доступны для sin, cos, sincos, cos + jsin, и atan2 функций.

CORDIC приближение распространения типов с фиксированной точкой:

Тип входных данныхФункцияВыход данных

Фиксированная точка, со знаком или без знака

sin, cos, sincos, и cos + jsin

fixdt(1, WL, WL - 2) где WL является ли вход размера слова

Этот тип с фиксированной точкой обеспечивает лучшую точность для алгоритма CORDIC.

Фиксированная точка, со знаком

atan2

fixdt(1, WL, WL – 3)

Фиксированная точка, без знака

atan2

fixdt(1, WL, WL – 2)

Интерполяция приближения распространения типов с фиксированной точкой:

Тип входных данныхФункцияВыход данных

Фиксированная точка, со знаком

sin, cos, sincos, cos + jsin, atan2

fixdt(1, WL, FL)

Фиксированная точка, без знака

sin, cos, sincos, cos + jsin, atan2

fixdt(1, WL - 1, FL)

Когда вы задаете Function sin, cos, sincos, или cos + jsin и установите Approximation method равным CORDICблок имеет следующие ограничения:

  • Когда вы используете знаковые типы с фиксированной точкой, входной угол должен попадать в диапазон [-2

  • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0, 2в) рад.

Когда вы задаете Function atan2 и Approximation method для CORDICблок имеет следующие ограничения:

  • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

  • Оба входа должны иметь совпадающий тип данных.

  • Когда вы используете signed фиксированных точек, размер слова должен быть 126 или меньше.

  • При использовании неподписанных фиксированных точек размер слова должна быть 125 или меньше.

Когда вы устанавливаете Function на sin, cos, sincos, или cos + jsin и установите Approximation method равным Lookupблок имеет следующие ограничения:

  • Когда вы используете подписанные фиксированные точки, входной угол должен попадать в область значений [- 2ᴨ,2ᴨ] рад .

  • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0,2ᴨ) рад.

  • Когда вы устанавливаете Function на atan2 и Approximation method для Lookupблок имеет следующие ограничения:

    • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

    • Оба входа должны иметь совпадающий тип данных.

    • Количество точек данных ограничено:

      • smallEnoughNumDataPoints = 2(inputFractionLen-2)+1

      • bigEnoughFractionLen = log2(numberOfDataPoints - 1)+2

      где:

      • smallEnoughNumDataPoints - максимальное количество точек данных, представленное заданной входом дроби, inputFractionLen.

      • bigEnoughFractionLen - минимальная длина дроби, необходимая для представления заданного количества точек данных, numberOfDataPoints.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Введите x -ось или вещественную часть аргумента функции для atan2. Когда вы задаете Function atan2блок показывает два входных порта. Первый вход (Port_1) является y осью или мнимой частью аргумента функции. Второй вход (Port_2) является осью x или вещественной частью аргумента функции. (Описание порядка расположения портов для различных ориентаций блоков см. в разделе Расположение портов после вращения или разворота.)

Зависимости

Чтобы включить этот порт, установите Function равным atan2.

Ограничения

  • Входные сигналы с фиксированной точкой поддерживаются только, когда вы задаете Approximation method CORDIC или Lookup.

  • Когда вы задаете Function atan2 и Approximation method к CORDIC:

    • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

    • Оба входа должны иметь совпадающий тип данных.

    • Когда вы используете signed фиксированных точек, размер слова должен быть 126 или меньше.

    • При использовании неподписанных фиксированных точек размер слова должна быть 125 или меньше.

  • Когда вы устанавливаете Function на sin, cos, sincos, или cos + jsin и установите Approximation method равным Lookupблок имеет следующие ограничения:

    • Когда вы используете подписанные фиксированные точки, входной угол должен попадать в область значений [- 2ᴨ,2ᴨ] рад .

    • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0,2ᴨ) рад.

  • Когда вы устанавливаете Function на atan2 и Approximation method для Lookupблок имеет следующие ограничения:

    • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

    • Оба входа должны иметь совпадающий тип данных.

    • Количество точек данных ограничено:

      • smallEnoughNumDataPoints = 2(inputFractionLen - 2)+1

      • bigEnoughFractinoLen = log2(numberOfDataPoints - 1)+2

      где:

      • smallEnoughNumDataPoints - максимальное количество точек данных, представленное заданной входом дроби, inputFractionLen.

      • bigEnoughFractinoLen - минимальная длина дроби, необходимая для представления заданного количества точек данных, numberOfDataPoints.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Выход

расширить все

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

  • Скалярные операции

  • Поэлементные векторные и матричные операции

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Синус входного сигнала, в рад и изм.

Зависимости

Чтобы включить этот порт, установите Function равным sincos.

Ограничения

Входные сигналы с фиксированной точкой поддерживаются только, когда вы задаете Approximation method CORDIC или Lookup.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Косинус входного сигнала, в рад и изм.

Зависимости

Чтобы включить этот порт, установите Function равным sincos.

Ограничения

Входные сигналы с фиксированной точкой поддерживаются только, когда вы задаете Approximation method CORDIC или Lookup.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Параметры

расширить все

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

Ограничения

Когда вы задаете Function sin, cos, sincos, или cos + jsin и установите Approximation method равным CORDICблок имеет следующие ограничения:

  • Когда вы используете знаковые типы с фиксированной точкой, входной угол должен попадать в диапазон [-2

  • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0, 2в) рад.

Когда вы задаете Function atan2 и Approximation method для CORDICблок имеет следующие ограничения:

  • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

  • Оба входа должны иметь совпадающий тип данных.

  • Когда вы используете signed фиксированных точек, размер слова должен быть 126 или меньше.

  • При использовании неподписанных фиксированных точек размер слова должна быть 125 или меньше.

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

Параметры блоков: Operator
Тип: Вектор символов
Значения: 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'atan2' | 'sinh' | 'cosh' | 'tanh' | 'asinh' | 'acosh' | 'atanh' | 'sincos' | 'cos + jsin'
По умолчанию: 'sin'

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

Метод приближенияПоддерживаемые типы данныхКогда использовать этот метод
None (по умолчанию)

Плавающая точка

Вы хотите использовать алгоритм Тейлора по умолчанию.

CORDIC

Плавающая и фиксированная точки

Вы хотите быстрое, приблизительное итеративное вычисление.

Lookup

Плавающая и фиксированная точки (двойной и одинарной)

Вы хотите быструю, приблизительную реализацию интерполяционной таблицы.

Зависимости

Чтобы включить этот параметр, установите Function равным sin, cos, sincos, cos + jsin, или atan2.

Чтобы использовать входные сигналы с фиксированной точкой, необходимо задать Approximation method равным CORDIC или Lookup.

Ограничения

Когда вы задаете Function sin, cos, sincos, или cos + jsin и установите Approximation method равным CORDICблок имеет следующие ограничения:

  • Когда вы используете знаковые типы с фиксированной точкой, входной угол должен попадать в диапазон [-2

  • Когда вы используете неподписанные фиксированные точки, входной угол должен попадать в область значений [0, 2в) рад.

Когда вы задаете Function atan2 и Approximation method для CORDICблок имеет следующие ограничения:

  • Входы должны быть того же размера, или, по крайней мере, одно значение должно быть скалярным значением.

  • Оба входа должны иметь совпадающий тип данных.

  • Когда вы используете signed фиксированных точек, размер слова должен быть 126 или меньше.

  • При использовании неподписанных фиксированных точек размер слова должна быть 125 или меньше.

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

Параметры блоков: ApproximationMethod
Тип: Вектор символов
Значения: 'None' | 'CORDIC' | 'Lookup'
По умолчанию: 'None'

Задайте количество итераций для выполнения алгоритма CORDIC. Значение по умолчанию является 11.

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

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

    Для примера, если вход блока fixdt(1,16,15), размер слова 16. В этом случае количество итераций не может превышать 16.

Зависимости

Чтобы включить этот параметр, вы должны задать Function и Approximation method параметры следующим образом:

  • Установите Function значение sin, cos, sincos, cos + jsin, или atan2.

  • Установите Approximation method значение CORDIC.

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

Параметры блоков: NumberOfIterations
Тип: Вектор символов
Значения: положительное целое число, меньше или равное размеру слова входного сигнала с фиксированной точкой
По умолчанию: '11'

Укажите единицу модуля угла для метода поиска следующим radian или revolution.

Зависимости

Чтобы включить этот параметр:

  • Установите Function значение sin, cos, sincos, cos + jsin, или atan2.

  • Установите Approximation method значение Lookup.

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

Параметры блоков: AngleUnit
Тип: Вектор символов
Значения: 'radian' | 'revolution'
По умолчанию: 'radian'

Задайте количество точек данных для интерполяционной таблицы в виде скалярного вещественного числа.

Зависимости

Чтобы включить этот параметр:

  • Установите Function значение sin, cos, sincos, cos + jsin, или atan2.

  • Установите Approximation method значение Lookup.

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

Параметры блоков: NumberOfDataPoints
Тип: Вектор символов
Значения: скаляр
По умолчанию: '16'

Задайте тип выходного сигнала блока Trigonometric Function следующим auto, real, или complex.

ФункцияТип входного сигналаТип выходного сигнала
АвтомобильРеальныйКомплекс
Любой выбор для параметра Function реальныйреальныйреальныйкомплекс
комплекскомплексошибкакомплекс

Зависимости

Установка значения Approximation method CORDIC отключает этот параметр.

Примечание

Когда Function atan2комплексные входные сигналы не поддерживаются для симуляции или генерации кода.

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

Параметры блоков: OutputSignalType
Тип: Вектор символов
Значения: 'auto' | 'real' | 'complex'
По умолчанию: 'auto'

Для acos и asinустановите этот флажок, чтобы удалить защиту от входов вне области допустимого, что уменьшает избыточность.

  • При снятии этого флажка защита включена. Блок насыщает входы вне области допустимого 1 или -1 перед выполнением любой операции. Сгенерированный код содержит код для проверки входных входов вне области допустимого.

  • При установке этого флажка защита снимается. Блок выполняет все операции с входом значением без каких-либо изменений. Сгенерированный код не содержит код для проверки входных входов вне области допустимого.

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

Зависимости

Установка значения Function acos и asin включает этот параметр.

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

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

Задайте шаг расчета как значение, отличное от -1. Для получения дополнительной информации см. Раздел «Задание шага расчета».

Зависимости

Этот параметр не отображается, если он явно не установлен на значение, отличное от -1. Для получения дополнительной информации смотрите Блоки, для которых шаг расчета не рекомендован.

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

Параметры блоков: SampleTime
Тип: Вектор символов
Значения: скаляр или вектор
По умолчанию: '-1'

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

Типы данных

double | фиксированную точку[a] | half | целое число[a] | single

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

yes

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

yes

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

yes

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

no

[a] Этот блок поддерживает фиксированные и базовые целочисленные типы данных для CORDIC 'метода аппроксимации'.

Подробнее о

расширить все

Ссылки

[1] Volder, Jack E., The CORDIC Trigonometric Computing Technique (неопр.) (недоступная ссылка). IRE транзакции на электронных компьютерах EC-8 (1959); 330–334.

[2] Andraka, Ray «Обзор алгоритма CORDIC для компьютеров на основе FPGA». Материалы шестого Международного симпозиума ACM/SIGDA 1998 года по программируемым массивам ворот на местах. 22-24 февраля (1998): 191–200.

[3] Walther, J.S., «A Unified Algorithm for Elementary Functions», Proceedings of the Spring Joint Computer Conference, May 18-20, 1971: 379-386.

[4] Шелин, Чарльз У., «Calculator Приближения функций», Американский математический месяц 90, № 5 (1983): 317-325.

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

.

Генерация кода ПЛК
Сгенерируйте структурированный текстовый код с помощью Coder™ Simulink ® PLC

.

См. также

Блоки

Функции

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