Trigonometric Function

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

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

    HDL Coder / Математические операции

  • Trigonometric Function block

Описание

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

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

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

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

Синус входа

sin (u)

sin
cos

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

because(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

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

дубинка (u)

cosh
tanh

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

tanh (u)

tanh
asinh

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

asinh (u)

asinh
acosh

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

acosh (u)

acosh
atanh

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

atanh (u)

atanh
sincos

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

cos + jsin

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

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

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

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

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

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

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

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

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

  • Когда вы используете подписанные фиксированные точки, размером слова должен быть 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потому что, sincos, cos + jsin, и atan2 функции.

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

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

Ограничения

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

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

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

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

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

sinпотому что, 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потому что, sincos, или cos + jsin и набор Approximation method к CORDIC, блок имеет эти ограничения:

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

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

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

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

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

  • Когда вы используете подписанные фиксированные точки, размером слова должен быть 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:

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

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

    • Когда вы используете подписанные фиксированные точки, размером слова должен быть 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потому что, sincos, или cos + jsin и набор Approximation method к CORDIC, блок имеет эти ограничения:

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

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

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

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

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

  • Когда вы используете подписанные фиксированные точки, размером слова должен быть 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потому что, sincos, cos + jsin, или atan2.

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

Ограничения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Задайте угловой модуль для метода поиска как radian или revolution.

Зависимости

Включить этот параметр:

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

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

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

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

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

Зависимости

Включить этот параметр:

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

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

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

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

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

ФункцияТип входного сигналаТип выходного сигнала
'auto'ДействительныйКомплекс
Любой выбор для параметра 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 | fixed point[a] | half | integer[a] | single

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

yes

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

yes

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

yes

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

no

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

Больше о

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

Ссылки

[1] Volder, Джек Э., “тригонометрический вычислительный метод CORDIC”. Транзакции IRE на электронно-вычислительных машинах EC-8 (1959); 330–334.

[2] Andraka, Излучите “Обзор Алгоритма CORDIC для основанных на FPGA Компьютеров”. Продолжения 1998 Шестых Международных Симпозиумов ACM/SIGDA по Программируемым пользователем вентильным матрицам. 22-24 февраля (1998): 191–200.

[3] Вальтер, J.S., “Объединенный алгоритм для элементарных функций”, продолжения компьютерной конференции по соединению Spring, 18-20 мая 1971: 379–386.

[4] Schelin, Чарльз В., “Приближение функций Калькулятора”, американская Mathematical Monthly 90, № 5 (1983): 317–325.

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

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

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

Блоки

Функции

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