exponenta event banner

Тригонометрическая функция

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

  • Библиотека:
  • Операции с симуляцией/математикой

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

  • Trigonometric Function block

Описание

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

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

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

ФункцияОписаниеМатематическое выражение Эквивалент 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

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

tanh(u)

tanh
asinh

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

asinh(u)

asinh
acosh

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

acosh(u)

acosh
atanh

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

atanh(u)

atanh
sincos

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

cos + jsin

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

Метод аппроксимации CORDIC

При использовании метода аппроксимации CORDIC (см. Подробнее) ввод блока требует дополнительных требований.

При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение CORDICблок имеет следующие ограничения:

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

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

При установке для параметра «Функция» значения atan2 и метод аппроксимации CORDICблок имеет следующие ограничения:

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

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

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

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

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

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

Метод аппроксимации подстановки

При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение Lookupблок имеет следующие ограничения:

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

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

  • При установке для параметра «Функция» значения atan2 и метод аппроксимации Lookupблок имеет следующие ограничения:

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

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

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

      • smallEnoughNumDataPoints = 2(inputFractionLen-2)+1

      • bigEnoughFractionLen = log2(numberOfDataPoints - 1)+2

      где:

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

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

Порты

Вход

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

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

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

  • cos

  • sincos

  • cos + jsin

  • atan2

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

  • Фиксированная точка (только если метод аппроксимации CORDIC)

  • tan

  • asin

  • acos

  • atan

  • sinh

  • cosh

  • tanh

  • asinh

  • acosh

  • atanh

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

Зависимости

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

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

    Тип входных данныхМетод аппроксимацииТип выходных данных

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

    None

    Зависит от выбора типа выходного сигнала. Опции: auto (тот же тип данных, что и входные данные), real, или complex.

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

    CORDIC

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

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

    Lookup

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

Для приближений CORDIC и поиска:

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

  • Вывод является реальным для sin, cos, sincos, и atan2 функции.

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

Ограничения

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

Входные сигналы с фиксированной точкой можно использовать только в том случае, если для параметра Метод аппроксимации установлено значение CORDIC или Lookup. Аппроксимации CORDIC и Lookup доступны для 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)

При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение CORDICблок имеет следующие ограничения:

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

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

При установке для параметра «Функция» значения atan2 и метод аппроксимации CORDICблок имеет следующие ограничения:

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

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

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

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

При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение Lookupблок имеет следующие ограничения:

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

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

  • При установке для параметра «Функция» значения atan2 и метод аппроксимации Lookupблок имеет следующие ограничения:

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

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

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

      • smallEnoughNumDataPoints = 2(inputFractionLen-2)+1

      • bigEnoughFractionLen = log2(numberOfDataPoints - 1)+2

      где:

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

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

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

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

Зависимости

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

Ограничения

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

  • При установке для параметра «Функция» значения atan2 и метод аппроксимации CORDIC:

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

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

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

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

  • При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение Lookupблок имеет следующие ограничения:

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

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

  • При установке для параметра «Функция» значения atan2 и метод аппроксимации Lookupблок имеет следующие ограничения:

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

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

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

      • smallEnoughNumDataPoints = 2(inputFractionLen - 2)+1

      • bigEnoughFractinoLen = log2(numberOfDataPoints - 1)+2

      где:

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

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

Параметры

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

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

Ограничения

При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение CORDICблок имеет следующие ограничения:

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

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

При установке для параметра «Функция» значения atan2 и метод аппроксимации 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, cos, sincos, cos + jsin, или atan2.

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

Ограничения

При установке для параметра «Функция» значения sin, cos, sincos, или cos + jsin и задайте для метода аппроксимации значение CORDICблок имеет следующие ограничения:

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

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

При установке для параметра «Функция» значения atan2 и метод аппроксимации CORDICблок имеет следующие ограничения:

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

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

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

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

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

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

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

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

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

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

Зависимости

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

  • Установить функцию в sin, cos, sincos, cos + jsin, или atan2.

  • Задайте для метода аппроксимации значение CORDIC.

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

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

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

Зависимости

Чтобы включить этот параметр, выполните следующие действия.

  • Установить функцию в sin, cos, sincos, cos + jsin, или atan2.

  • Задайте для метода аппроксимации значение Lookup.

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

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

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

Зависимости

Чтобы включить этот параметр, выполните следующие действия.

  • Установить функцию в sin, cos, sincos, cos + jsin, или atan2.

  • Задайте для метода аппроксимации значение Lookup.

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

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

Укажите тип выходного сигнала тригонометрического функционального блока как auto, real, или complex.

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

Зависимости

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

Примечание

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

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

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

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

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

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

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

Зависимости

Установка для функции значения 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] Вольдер, Джек Э., «Методика тригонометрических вычислений CORDIC». IRE Transactions on Electronic Computers EC-8 (1959); 330–334.

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

[3] Вальтер, J.S., «Единый алгоритм элементарных функций», Труды весенней совместной компьютерной конференции, 18-20 мая 1971: 379-386.

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

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

.

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

.

См. также

Блоки

Функции

  • (Конструктор фиксированных точек) | (Конструктор фиксированных точек) | (Конструктор фиксированных точек)
Представлен до R2006a