Аппроксимируйте n-мерную функцию
Simulink / Интерполяционные таблицы
HDL Coder / Интерполяционные таблицы
1D, 2D, и n-D блоки Интерполяционной таблицы оценивают произведенное представление функции в переменных N
где функциональный F может быть эмпирическим. Блок-диаграммы вводят к выходному значению путем поиска или интерполяции таблицы значений, которые вы задаете с параметрами блоков. Блок поддерживает плоская (константа), линейная (линейный наклон точки), Лагранж (линейный Лагранж), самый близкий, кубический сплайн и методы интерполяции сплайна Акима. Можно применить эти методы к таблице любой размерности от 1 до 30.
В следующем блоке первый вход идентифицирует первую размерность (строка) точки останова, второй вход идентифицирует второе измерение (столбец) точки останова и так далее.
Смотрите Местоположение порта После Вращения или Зеркального отражения для описания порядка порта для различных ориентаций блока.
Когда Math and Data Types> параметр конфигурации Use algorithms optimized for row-major array layout установлен, 2D и n-D поведение блока Lookup Table изменяется от упорядоченного по столбцам до упорядоченного по строкам. Для этих блоков упорядоченные по столбцам и упорядоченные по строкам алгоритмы могут отличаться по порядку выходных вычислений, возможно приводящих к немного отличающимся численным значениям. Эта возможность требует лицензия Embedded Coder® или Simulink® Coder™. Для получения дополнительной информации об упорядоченной по строкам поддержке смотрите Генерацию кода Матриц и Массивов (Simulink Coder).
Эти параметры блоков задают табличные данные и точка останова.
Параметры блоков | Цель |
---|---|
Number of table dimensions | Задает количество размерностей вашей интерполяционной таблицы. |
Breakpoints | Задает вектор точки останова, который соответствует каждой размерности вашей интерполяционной таблицы. |
Table data | Задает связанный набор выходных значений. |
Равномерно распределенные точки останова могут сделать сгенерированный код без делений. Для получения дополнительной информации смотрите fixpt_evenspace_cleanup
и Идентифицируйте сомнительные операции фиксированной точки (Embedded Coder).
n-D, 1D и блоки двумерной интерполяционной таблицы, генерируют выведенный путем поиска или оценки табличных значений на основе входных значений.
Блокируйте входные параметры | Поведение Блока Интерполяционной таблицы n-D |
---|---|
Совпадайте со значениями индексов в наборах данных точки останова | Выводит табличное значение на пересечении строки, столбца и более высоких точек останова размерности |
Не совпадайте со значениями индексов в наборах данных точки останова, но в области значений | Интерполирует соответствующие табличные значения, с помощью Interpolation method, который вы выбираете |
Не совпадайте со значениями индексов в наборах данных точки останова, и вне области значений | Экстраполирует выходное значение, с помощью Extrapolation method, который вы выбираете |
Можно использовать блок Interpolation Using Prelookup с блоком Prelookup, чтобы выполнить эквивалентную операцию одного блока n-D Lookup Table. Эта комбинация блоков предлагает большую гибкость, которая может привести к более эффективной производительности симуляции для линейных интерполяций.
Когда операция поиска является доступом к массиву, который не требует интерполяции, использует блок Direct Lookup Table (n-D). Например, если у вас есть целочисленное значение k
и вы хотите k
элемент th таблицы, y = table(k)
, интерполяция является ненужной.
u1
— Первая размерность (строка) входные параметрыВходные параметры с действительным знаком к порту u1, сопоставленному с выходным значением путем поиска или интерполяции таблицы значений, которые вы задаете.
Пример: 0:10
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
uN
— энные входные значения размерностиВходные параметры с действительным знаком к порту uN, сопоставленному с выходным значением путем поиска или интерполяции таблицы значений, которые вы задаете.
Пример: 0:10
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
Port_1
— Выведите вычисленный путем поиска или оценки табличных значенийВыведите сгенерированный путем поиска или оценки табличных значений на основе входных значений:
Когда блок вводит... | n-D блок Lookup Table... |
---|---|
Совпадайте со значениями индексов в наборах данных точки останова | Выводит табличное значение на пересечении строки, столбца и более высоких точек останова размерности |
Не совпадайте со значениями индексов в наборах данных точки останова, но в области значений | Интерполирует соответствующие табличные значения, с помощью Interpolation method, который вы выбираете |
Не совпадайте со значениями индексов в наборах данных точки останова, и вне области значений | Экстраполирует выходное значение, с помощью Extrapolation method, который вы выбираете |
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Number of table dimensions
— Количество размерностей интерполяционной таблицы
(значение по умолчанию) | 1
| 2
| 4
| ...
| 30
Введите номер размерностей интерполяционной таблицы. Этот параметр определяет:
Количество независимых переменных для таблицы и количество входных параметров блока
Количество наборов точки останова, чтобы задать
Значение | Установка |
---|---|
1, 2, 3, или 4 | Выберите значение из выпадающего списка. |
Более высокое количество табличных размерностей | Введите положительное целое число непосредственно в поле. Максимальное количество табличных размерностей, которые поддерживает этот блок, равняется 30. |
Например, таблица с размером M x N x.. средними значениями, что размером размерности 1 является M, размер размерности 2, является N и т.д. M должен совпадать с первой длиной точки останова, N должен совпадать со второй длиной точки останова и т.д.
Параметры блоков:
NumberOfTableDimensions |
Ввод: символьный вектор |
Значения:
'1' | '2' | '3' | '4' | ... | 30 |
Значение по умолчанию:
'3' |
Data specification
— Метод таблицы и спецификации точки остановаTable and breakpoints
(значение по умолчанию) | Lookup table object
Из списка выберите:
Table and breakpoints
— Задайте табличные данные и точки останова. Выбирание этой опции включает следующие параметры:
Table data
Breakpoints specification
Breakpoints 1
Breakpoints 2
Breakpoints 3
Edit table and breakpoints
Lookup table object
— Используйте существующую интерполяционную таблицу (Simulink.LookupTable
объект. Выбирание этой опции включает поле Name и кнопку Edit table and breakpoints.
Параметры блоков:
DataSpecification |
Ввод: символьный вектор |
Значения:
'Table and breakpoints' | 'Lookup table object' |
Значение по умолчанию:
'Table and breakpoints' |
Name
— Имя объекта интерполяционной таблицы[]
(значение по умолчанию) | Simulink.LookupTable
объектВведите имя интерполяционной таблицы (Simulink.LookupTable
объект. Если Simulink.LookupTable
объект не существует, кликает по кнопке действий и выбирает Create. Соответствующие параметры нового объекта интерполяционной таблицы автоматически заполняются с информацией о блоке.
Чтобы включить этот параметр, установите Data specification на Lookup table object
.
Параметры блоков:
LookupTableObject |
Ввод: символьный вектор |
Значения: имя Simulink.LookupTable объект |
Значение по умолчанию:
'' |
Table data
— Задайте таблицу выходных значенийreshape(repmat([4 5 6;16 19 20;10 18 23],1,2),[3,3,2])
(значение по умолчанию) | матрица значений с размерностями, которые совпадают с Number of table dimensionsВведите таблицу выходных значений.
В процессе моделирования матричный размер должен совпадать с размерностями, заданными параметром Number of table dimensions. Однако во время редактирования блок-схемы, можно ввести пустую матрицу (заданный как []
) или неопределенная переменная рабочей области. Этот метод позволяет вам отложить задавать правильно определенную размеры матрицу для табличных данных и продолжать редактировать блок-схему.
Чтобы включить этот параметр, установите Data specification на Table and breakpoints
.
Параметры блоков:
Table |
Ввод: символьный вектор |
Значения: матрица табличных значений |
Значение по умолчанию:
'reshape(repmat([4 5 6;16 19 20;10 18 23],1,2),[3,3,2])' |
Breakpoints specification
— Метод спецификации точки остановаExplicit values
(значение по умолчанию) | Even spacing
Задайте, ввести ли данные как явные точки останова или как параметры, которые генерируют равномерно распределенные точки останова.
Чтобы явным образом задать данные о точке останова, установите этот параметр на Explicit values
и введите данные о точке останова в текстовое поле рядом с параметрами Breakpoints.
Чтобы задать параметры, которые генерируют равномерно распределенные точки останова, установите этот параметр на Even spacing
и введите значения для First point и параметры Spacing для каждой размерности данных о точке останова. Блок вычисляет число точек, чтобы сгенерировать из табличных данных.
Чтобы включить этот параметр, установите Data specification на Table and breakpoints
.
Параметры блоков:
BreakpointsSpecification |
Ввод: символьный вектор |
Значения:
'Explicit values' | 'Even spacing' |
Значение по умолчанию:
'Explicit values' |
Breakpoints
— Явные значения точки останова, или сначала указывают и интервал точек останова
(значение по умолчанию) | 1 на n или n-1 вектор монотонно увеличения значенийЗадайте данные о точке останова явным образом или как равномерно распределенные точки останова, на основе значения параметра Breakpoints specification.
Если вы устанавливаете Breakpoints specification на Explicit values
, введите набор точки останова, который соответствует каждой размерности табличных данных в каждой строке Breakpoints. Для каждой размерности задайте точки останова как или n-1 вектор 1 на n, значения которого строго монотонно увеличиваются.
Если вы устанавливаете Breakpoints specification на Even spacing
, введите параметры First point и Spacing в каждой строке Breakpoints, чтобы сгенерировать равномерно распределенные точки останова в соответствующей размерности. Ваши табличные данные определяют количество равномерно разнесенных точек.
Чтобы включить этот параметр, установите Data specification на Table and breakpoints
.
Параметры блоков:
BreakpointsForDimension1 | BreakpointsForDimension2 | ... | BreakpointsForDimension30 | |
Ввод: символьный вектор |
Значения: 1 на n или вектор n-1 монотонно увеличения значений |
Значение по умолчанию:
'[10, 22, 31]' |
First point
— Сначала укажите в равномерно расположенных с интервалами данных о точке останова
(значение по умолчанию) | скалярЗадайте первую точку в своих равномерно расположенных с интервалами данных о точке останова как конечный скаляр с действительным знаком. Этот параметр доступен, когда Breakpoints specification установлен в Even spacing
.
Чтобы включить этот параметр, установите Data specification на Table and breakpoints
, и Breakpoints specification к Even spacing
.
Параметры блоков:
BreakpointsForDimension1FirstPoint | BreakpointsForDimension2FirstPoint | ... | BreakpointsForDimension30FirstPoint | |
Ввод: символьный вектор |
Значения: с действительным знаком, конечный, скалярный |
Значение по умолчанию:
'1' |
Spacing
— Интервал между равномерно расположенными с интервалами точками останова
(значение по умолчанию) | скалярЗадайте интервал между точками в ваших равномерно распределенных данных о точке останова.
Чтобы включить этот параметр, установите Data specification на Table and breakpoints
, и Breakpoints specification к Even spacing
.
Параметры блоков:
BreakpointsForDimension1Spacing | BreakpointsForDimension2Spacing | ... | BreakpointsForDimension30Spacing | |
Ввод: символьный вектор |
Значения: положительный, с действительным знаком, конечный, скалярный |
Значение по умолчанию:
'1' |
Edit table and breakpoints
— Диалоговое окно Launch Lookup Table EditorНажмите эту кнопку, чтобы открыть Редактор Интерполяционной таблицы. Для получения дополнительной информации смотрите Интерполяционные таблицы Редактирования в документации Simulink.
Нажатие этой кнопки для объекта интерполяционной таблицы позволяет вам отредактировать объект и сохранить новые значения для объекта.
Interpolation method
— Метод интерполяции между значениями точки остановаLinear point-slope
(значение по умолчанию) | Flat
| Nearest
| Linear Lagrange
| Cubic spline
| Akima spline
Когда вход падает между значениями точки останова, блок интерполирует точки останова граничения использования выходного значения. Для получения дополнительной информации о методах интерполяции смотрите Методы интерполяции.
Если вы выбираете Cubic spline
, блок поддерживает только скалярные сигналы. Другие методы интерполяции поддерживают нескалярные сигналы.
Если вы выбираете Akima spline
, методом экстраполяции может только быть Akima spline
.
Когда установлено в модифицированный метод Интерполяции Акима, этот блок не поддерживает:
Упорядоченное по строкам размещение массивов и алгоритмы оптимизированы для упорядоченного по строкам размещения массивов
Масштабируемый дважды и типы данных с фиксированной точкой
Simulink.LookupTable
объекты
Генерация кода, когда настройка parameterCode Generation> флажок Interface> Support non-finite numbers устанавливается
Параметры блоков: InterpMethod |
Ввод: символьный вектор |
Значения:
'Linear point-slope' | 'Flat' | 'Nearest' | 'Linear Lagrange' | 'Cubic spline' | 'Akima spline' |
Значение по умолчанию:
'Linear point-slope' |
Extrapolation method
— Метод обработки входных значений, которые выходят за пределы области значений набора данных точки остановаLinear
(значение по умолчанию) | Clip
| Cubic spline
| Akima spline
Выберите Clip
, Linear
, или Cubic spline
. См. Методы Экстраполяции для получения дополнительной информации.
Если методом экстраполяции является Linear
, значение экстраполяции вычисляется на основе выбранного метода линейной интерполяции. Например, если методом интерполяции является линейный Лагранж, метод экстраполяции наследовал линейное Лагранжево уравнение, чтобы вычислить экстраполируемое значение.
Выбрать Cubic spline
для Extrapolation method необходимо также выбрать Cubic spline
для Interpolation method.
Выбрать Akima spline
для Extrapolation method необходимо также выбрать Akima spline
для Interpolation method.
Параметры блоков: ExtrapMethod |
Ввод: символьный вектор |
Значения:
'Linear' | 'Clip' | 'Cubic spline' | 'Akima spline' |
Значение по умолчанию: 'Linear' |
Index search method
— Метод вычисления табличных индексовEvenly spaced points
(значение по умолчанию) | Linear search
| Binary search
Выберите Evenly spaced points
, Linear search
, или Binary search
. Каждый метод поиска имеет преимущества скорости в различных обстоятельствах:
Для равномерно расположенных с интервалами наборов точки останова (например, 10, 20, 30, и так далее), вы достигаете оптимальной скорости путем выбора Evenly spaced points
вычислить табличные индексы.
Этот алгоритм использует только первые две точки останова набора, чтобы определить смещение и интервал остающихся точек.
Установите Index search method на Evenly spaced points
при использовании Simulink.LookupTable
объект задать табличные данные и параметр Breakpoints Specification Simulink.LookupTable
, на который ссылаются, объект установлен в
Even spacing
.
Для неравномерно расположенных с интервалами наборов точки останова следуйте этим инструкциям:
Если входные сигналы не варьируются очень между временными шагами, выбор Linear search
с Begin index search using previous index result производит лучшую производительность.
Если входные сигналы переходят больше чем один или два табличных интервала на временной шаг, выбор Binary search
производит лучшую производительность.
Субоптимальный выбор метода поиска по индексу может вести, чтобы замедлить производительность моделей, которые полагаются в большой степени на интерполяционные таблицы.
Сгенерированный код хранит только первую точку останова, интервал и количество точек останова когда:
Данные о точке останова не являются настраиваемыми.
Методом поиска по индексу является Evenly spaced points
.
Параметры блоков: IndexSearchMethod |
Ввод: символьный вектор |
Значения: 'Binary search' | 'Evenly spaced points' | 'Linear search' |
Значение по умолчанию: 'Binary search' |
Begin index search using previous index result
— Начните использовать индекс от предыдущего временного шагаoff
(значение по умолчанию) | on
Установите этот флажок, когда это необходимо, блок, чтобы запустить его поиск с помощью индекса, найденного на предыдущем временном шаге. Для входных параметров, которые медленно изменяются относительно размера интервала, включая эту опцию, может улучшать производительность. В противном случае линейные методы поискового и двоичного поиска могут занять больше времени, специально для больших наборов точки останова.
Чтобы включить этот параметр, установите Index search method на Linear search
или Binary search
.
Параметры блоков: BeginIndexSearchUsing PreviousIndexResult |
Ввод: символьный вектор |
Значения: 'off' | 'on' |
Значение по умолчанию: 'off' |
Diagnostic for out-of-range input
— Блокируйте действие, когда введенный будет вне области значенийNone
(значение по умолчанию) | Warning
| Error
Задайте, произвести ли предупреждение или ошибку, когда вход вне области значений. Опции включают:
None
— Не произведите ответ.
Warning
— Выведите предупреждение и продолжите симуляцию.
Error
— Отключите симуляцию и отобразите ошибку.
Параметры блоков: DiagnosticForOutOfRangeInput |
Ввод: символьный вектор |
Значения: 'None' | 'Warning' | 'Error' |
Значение по умолчанию: 'None' |
Use last table value for inputs at or above last breakpoint
— Метод для вычисления выхода для входных параметров в или выше последней точки остановаoff
(значение по умолчанию) | on
Используя этот флажок, задайте соглашение индексации что использование блока, чтобы обратиться к последнему элементу набора точки останова и его соответствующего табличного значения. Этот флажок релевантен, если вход равен или больше, чем последний элемент данных о точке останова. Из-за округления, выбор и снятие этого флажка могут привести к отличающимся результатам для последней точки останова между симуляцией и генерацией кода.
Флажок | Индекс, используемый блоком | Часть интервала |
---|---|---|
Выбранный | Последний элемент данных о точке останова по вкладке Table and Breakpoints | 0 |
Очищенный | Предпоследний элемент данных о точке останова по вкладке Table and Breakpoints | 1 |
Учитывая вход u в области значений набора точки останова bp, дробный f интервала, в области значений 0 f 1, вычисляется как показано ниже.
Предположим, что набором точки останова является [1 4 5]
и входом u является 5.5
. Если вы устанавливаете этот флажок, индекс является индексом последнего элемента (5
) и часть интервала 0. Если вы снимаете этот флажок, индекс является индексом предпоследнего элемента (4
) и часть интервала равняется 1.
Чтобы включить этот параметр, установите:
Interpolation method к Linear
.
Extrapolation method к Clip
.
Параметры блоков: UseLastTableValue |
Ввод: символьный вектор |
Значения: 'off' | 'on' |
Значение по умолчанию: 'off' |
Use one input port for all input data
— Используйте только один входной портoff
(значение по умолчанию) | on
Установите этот флажок, чтобы использовать только один входной порт, который ожидает сигнал, который является n
элементы, широкие для n-мерной таблицы. Эта опция полезна для удаления помехи линии на блок-схеме со многими интерполяционными таблицами.
Когда вы устанавливаете этот флажок, один входной порт с меткой u
появляется на блоке.
Параметры блоков:
UseOneInputPortForAllInputData |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Remove protection against out-of-range input in generated code
— Удалите код, который проверяет на входные значения из области значенийoff
(значение по умолчанию) | on
Задайте, включать ли код, который проверяет на входные значения из области значений.
Флажок | Результат | Когда использовать |
---|---|---|
| Сгенерированный код не включает условные операторы, чтобы проверять на входные параметры точки останова из области значений. Когда вход из области значений, он может вызвать неопределенное поведение для сгенерированного кода. |
Для КПД кода |
|
Сгенерированный код включает условные операторы, чтобы проверять на входные параметры из области значений. |
Для важных приложений безопасности |
Если ваш вход не вне области значений, можно установить флажок Remove protection against out-of-range index in generated code для КПД кода. По умолчанию этот флажок снимается. Для важных приложений безопасности не устанавливайте этот флажок. Если вы хотите установить флажок Remove protection against out-of-range index in generated code, сначала проверяйте, что ваши входные параметры модели находятся в области значений. Например:
Снимите флажок Remove protection against out-of-range index in generated code.
Установите параметр Diagnostic for out-of-range input на Error
.
Симулируйте модель в режиме normal mode.
Если существуют ошибки из области значений, фиксируют их, чтобы быть в области значений и запустить симуляцию снова.
Когда симуляция больше не сгенерирует из области значений входные ошибки, установите флажок Remove protection against out-of-range index in generated code.
Когда вы устанавливаете флажок Remove protection against out-of-range index in generated code, и вход вне области значений, поведение не определено для сгенерированного кода.
В зависимости от вашего приложения можно осуществить следующие проверки Model Advisor, чтобы проверить использование этого флажка:
By Product> Embedded Coder> Identify lookup table blocks that generate expensive out-of-range checking code
By Product> Simulink Check> Modeling Standards> DO-178C/DO-331 Checks> Check usage of lookup table blocks
Для получения дополнительной информации о Model Advisor, смотрите Осуществленные Проверки Model Advisor.
Кроме того, чтобы определить, безопасно ли установить этот флажок, если у вас есть лицензия Simulink Design Verifier™, рассматривают использование Обнаружить Нарушений Входного диапазона Блока (Simulink Design Verifier) проверка.
Параметры блоков:
RemoveProtectionInput |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Support tunable table size in code generation
— Включите настраиваемый табличный размер в сгенерированном кодеoff
(значение по умолчанию) | on
Установите этот флажок, чтобы включить настраиваемый табличный размер в сгенерированном коде. Эта опция позволяет вам изменить размер и значения интерполяционной таблицы и данных о точке останова в сгенерированном коде, не регенерируя или перекомпилировав код. Можно только уменьшить размер интерполяционной таблицы и установить точки останова данные.
Если вы устанавливаете Interpolation method на Cubic spline
, этот флажок не доступен.
Параметры блоков:
SupportTunableTableSize |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Sample time
— Задайте шаг расчета как значение кроме -1
(значение по умолчанию) | скаляр | векторЗадайте шаг расчета как значение кроме-1. Для получения дополнительной информации см. Настройку времени выборки.
Этот параметр не отображается, если он явным образом не установлен в значение кроме -1
. Чтобы узнать больше, смотрите Блоки, для Которых Не Рекомендуется Шаг расчета.
Параметры блоков:
SampleTime |
Ввод: символьный вектор |
Значения: скаляр или вектор |
Значение по умолчанию:
'-1' |
Maximum indices for each dimension
— Максимальное значение индекса для каждой табличной размерности[]
(значение по умолчанию) | scalar or vector of positive integer values
Пример: [4 6]
для 5 7 таблицы
Задайте максимальные значения индекса для каждой табличной размерности, использующей основанную на нуле индексацию. Можно задать скаляр или вектор положительных целочисленных значений с помощью следующих типов данных:
Встроенные типы с плавающей точкой: double
и single
Встроенные целочисленные типы: int8
int16
int32
uint8
uint16
, и uint32
Примеры допустимых технических требований включают:
[4 6] для 5 7 таблицы
[int8(2) int16(5) int32(9)]
для 3 6 10 таблицами
Simulink.Parameter
чье значение при генерации кода является тем меньше, чем размерности табличных данных. Для получения дополнительной информации смотрите Настраиваемый Табличный Размер в Сгенерированном коде.
Чтобы включить этот параметр, выберите Support tunable table size in code generation. При настройке этого параметра в сгенерированном коде обеспечьте новые табличные данные и точки останова наряду с настроенным значением параметров.
Параметры блоков:
MaximumIndicesForEachDimension |
Ввод: символьный вектор |
Значения: скаляр или вектор положительных целочисленных значений |
Значение по умолчанию:
'[]' |
Table data
— Тип данных табличных данныхInherit: Same as output
(значение по умолчанию) | double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Задайте тип данных table. Можно установить его на:
Правило, которое наследовало тип данных, например, Inherit: Same as output
Имя встроенного типа данных, например, single
Имя объекта типа данных, например, Simulink.NumericType
объект
Выражение, которое оценивает к типу данных, например, fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.
Задайте тип данных table, отличающийся от типа выходных данных для этих случаев:
Более низкие требования к памяти для того, чтобы хранить табличные данные, которые используют меньший тип, чем выходной сигнал
Совместное использование предмасштабированных табличных данных между двумя блоками n-D Lookup Table с различными типами выходных данных
Совместное использование пользовательских данных о столе с возможностью хранения в сгенерированном коде для блоков с различными типами выходных данных
Параметры блоков: TableDataTypeStr |
Ввод: символьный вектор |
Значения:
'Inherit: Inherit from 'Table data'' | 'Inherit: Same as output' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type expression>' |
Значение по умолчанию: 'Inherit: Same as output' |
Table data Minimum
— Минимальное значение табличных данных[]
| scalar
Задайте минимальное значение для табличных данных. Значением по умолчанию является []
(незаданный).
Параметры блоков: TableMin |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[]' |
Table data Maximum
— Максимальное значение табличных данных[]
| scalar
Задайте максимальное значение для табличных данных. Значением по умолчанию является []
(незаданный).
Параметры блоков: TableMax |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[]' |
Breakpoints
— Установите точки останова тип данныхInherit: Same as corresponding input
(значение по умолчанию) | double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| Enum: <class name>
| <data type expression>
Задайте тип данных для набора данных о точке останова. Можно установить его на:
Правило, которое наследовало тип данных, например, Inherit: Same as corresponding input
Имя встроенного типа данных, например, single
Имя класса типа данных, например, перечислимого класса типа данных
Имя объекта типа данных, например, Simulink.NumericType
объект
Выражение, которое оценивает к типу данных, например, fixdt(1,16,0)
Точки останова поддерживают неупорядоченные перечисленные данные. В результате линейные поисковые запросы также не упорядочены, который предлагает гибкость, но может повлиять на производительность. Поиск начинается с первого элемента в точке останова.
Если флажок Begin index search using previous index result устанавливается, необходимо использовать упорядоченные монотонно увеличивающиеся данные. Это упорядоченное расположение улучшает производительность.
Для перечислимых данных Extrapolation method должен быть Clip
.
Блок не поддерживает из области значений введенный для перечислимых данных. Когда определение перечислило данные, включайте целый набор перечисления в набор данных точки останова. Например, используйте enumeration
функция.
Это - ограничение для использования перечислимых данных с этим блоком:
Блок не поддерживает из области значений введенный для перечислимых данных. Когда определение перечислило данные, включайте целый набор перечисления в набор данных точки останова. Например, используйте enumeration
функция.
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.
Задайте тип данных точки останова, отличающийся от соответствующего типа входных данных для этих случаев:
Более низкие требования к памяти для того, чтобы хранить данные о точке останова, которые используют меньший тип, чем входной сигнал
Совместное использование предмасштабированных данных о точке останова между двумя блоками n-D Lookup Table с различными типами входных данных
Совместное использование пользовательского устройства хранения данных устанавливает точки останова данные в сгенерированном коде для блоков с различными типами входных данных
Параметры блоков: BreakpointsForDimension1DataTypeStr | BreakpointsForDimension2DataTypeStr| ... | BreakpointsForDimension30DataTypeStr |
Ввод: символьный вектор |
Значения:
'Inherit: Same as corresponding input' | 'Inherit: Inherit from 'Breakpoint data'' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type expression>' |
Значение по умолчанию: 'Inherit: Same as corresponding input' |
Breakpoints Minimum
— Данные о точке останова минимального значения могут иметь[]
| scalar
Задайте минимальное значение, которое может иметь набор данных о точке останова. Значением по умолчанию является []
(незаданный).
Параметры блоков: BreakpointsForDimension1Min | BreakpointsForDimension2Min | ... | BreakpointsForDimension30Min |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[]' |
Breakpoints Maximum
— Данные о точке останова максимального значения могут иметь[]
| scalar
Задайте максимальное значение, которое может иметь набор данных о точке останова. Значением по умолчанию является []
(незаданный).
Параметры блоков: BreakpointsForDimension1Max | BreakpointsForDimension2Max | ... | BreakpointsForDimension30Max |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[]' |
Fraction
— Дробный тип данныхInherit: Inherit via internal rule
(значение по умолчанию) | double
| single
| fixdt(1,16,0)
| <data type expression>
Задайте дробный тип данных. Можно установить его на:
Правило, которое наследовало тип данных, например, Inherit: Inherit via internal rule
Имя встроенного типа данных, например, single
Имя объекта типа данных, например, Simulink.NumericType
объект
Выражение, которое оценивает к типу данных, например, fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.
Параметры блоков: FractionDataTypeStr |
Ввод: символьный вектор |
Значения:
'Inherit: Inherit via internal rule' | 'double' | 'single' | 'fixdt(1,16,0)'|'<data type expression>' |
Значение по умолчанию: 'Inherit: Inherit via internal rule' |
Intermediate results
— Промежуточный тип данных результатов Inherit: Same as output
(значение по умолчанию) | double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Задайте промежуточный тип данных результатов. Можно установить его на:
Правило, которое наследовало тип данных, например, Inherit: Same as output
Имя встроенного типа данных, например, single
Имя объекта типа данных, например, Simulink.NumericType
объект
Выражение, которое оценивает к типу данных, например, fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.
Используйте этот параметр, чтобы задать выше (или ниже) точность для внутренних расчетов, чем для табличных данных или выходных данных.
Параметры блоков: IntermediateResultsDataTypeStr |
Ввод: символьный вектор |
Значения:
'Inherit: Inherit via internal rule' | 'Inherit: Same as output' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type expression>' |
Значение по умолчанию: 'Inherit: Same as output' |
Output
— Тип выходных данныхInherit: Same as input
(значение по умолчанию) | double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Задайте тип выходных данных. Можно установить его на:
Правило, которое наследовало тип данных, например, Inherit: Inherit via back propagation
Имя встроенного типа данных, например, single
Имя объекта типа данных, например, Simulink.NumericType
объект
Выражение, которое оценивает к типу данных, например, fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.
Параметры блоков: OutDataTypeStr |
Ввод: символьный вектор |
Значения:
'Inherit: Inherit via back propagation' | 'Inherit: Inherit from table data' | 'Inherit: Same as first input' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type expression' |
Значение по умолчанию: 'Inherit: Same as first input' |
Output Minimum
— Минимальное значение блок может вывести []
| scalar
Задайте минимальное значение что блок выходные параметры. Значением по умолчанию является []
(незаданный). Программное обеспечение Simulink использует это значение, чтобы выполнить:
Проверка диапазона параметра (см., Задает Минимальные и Максимальные значения для Параметров блоков).
Проверка диапазона симуляции (см., Указывает Диапазоны сигнала).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и влиять на результаты некоторых режимов симуляции, такие как SIL или режим external mode.
Параметры блоков: OutMin |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[]' |
Output Maximum
— Максимальное значение блок может вывести[]
| scalar
Задайте максимальное значение, которое может вывести блок. Значением по умолчанию является []
(незаданный). Программное обеспечение Simulink использует это значение, чтобы выполнить:
Проверка диапазона параметра (см., Задает Минимальные и Максимальные значения для Параметров блоков).
Проверка диапазона симуляции (см., Указывает Диапазоны сигнала).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и влиять на результаты некоторых режимов симуляции, такие как SIL или режим external mode.
Параметры блоков: OutMax |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[]' |
Internal rule priority
— Внутреннее правило для промежуточных вычисленийSpeed
(значение по умолчанию) | Precision
Задайте внутреннее правило для промежуточных вычислений. Выберите Speed
для более быстрых вычислений. Если вы делаете, потеря точности может произойти, обычно до 2 битов.
Параметры блоков: InternalRulePriority |
Ввод: символьный вектор |
Значения: 'Speed' | 'Precision' |
Значение по умолчанию: 'Speed' |
Require all inputs to have the same data type
— Потребуйте, чтобы все входные параметры имели совпадающий тип данныхon
(значение по умолчанию) | off
Выберите, чтобы потребовать, чтобы все входные параметры имели совпадающий тип данных.
Параметры блоков: InputSameDT |
Ввод: символьный вектор |
Значения: 'off' | 'on' |
Значение по умолчанию: 'on' |
Lock data type settings against changes by the fixed-point tools
— Препятствуйте тому, чтобы Fixed-Point Tool заменили типы данныхoff
(значение по умолчанию) | on
Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили типы данных, которые вы задаете на этом блоке. Для получения дополнительной информации смотрите Блокировку Установка Типа Выходных данных (Fixed-Point Designer).
Параметры блоков: LockScale |
Ввод: символьный вектор |
Значения: 'off' | 'on' |
Значение по умолчанию: 'off' |
Integer rounding mode
— Режим Rounding для операций фиксированной точкиSimplest
(значение по умолчанию) | Ceiling
| Convergent
| Floor
| Nearest
| Round
| Zero
Задайте округляющийся режим для вычислений интерполяционной таблицы фиксированной точки, которые происходят в процессе моделирования или подписание кода, сгенерированного из модели. Для получения дополнительной информации смотрите Округление (Fixed-Point Designer).
Эта опция не влияет на округление значений параметров блоков. Simulink округляет такие значения к самому близкому представимому целочисленному значению. Чтобы управлять округлением параметров блоков, введите выражение с помощью функции округления MATLAB® в поле редактирования на диалоговом окне блока.
Параметры блоков: RndMeth |
Ввод: символьный вектор |
Значения: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
Значение по умолчанию: 'Simplest' |
Saturate on integer overflow
— Метод действия переполненияoff
(значение по умолчанию) | on
Действие | Причины принятия этих мер | Что происходит для переполнения | Пример |
---|---|---|---|
Установите этот флажок ( | Ваша модель имеет возможное переполнение, и вы хотите явную защиту насыщения в сгенерированном коде. | Переполнение насыщает или к минимальному или к максимальному значению, которое может представлять тип данных. | Переполнение, сопоставленное с 8-битным целым числом со знаком, может насыщать к-128 или 127. |
Не устанавливайте этот флажок ( | Вы хотите оптимизировать КПД своего сгенерированного кода. Вы не хотите чрезмерно определять, как блок обрабатывает сигналы из области значений. Для получения дополнительной информации смотрите Ошибки Диапазона сигнала Поиска и устранения неисправностей. | Переполнение переносится к соответствующему значению, которое является представимым, по условию вводят. | Номер 130 не помещается в 8-битное целое число со знаком и переносится к-126. |
Если вы сохраняете свою модель как версию R2009a или ранее, эта установка флажка не оказывает влияния, и никакой код насыщения не появляется. Это поведение сохраняет обратную совместимость.
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, не только выходу или результату. В общем случае процесс генерации кода может обнаружить, когда переполнение не возможно. В этом случае генератор кода не производит код насыщения.
Параметры блоков: SaturateOnIntegerOverflow |
Ввод: символьный вектор |
Значения: 'off' | 'on' |
Значение по умолчанию: 'off' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
Предположим, что вы имеете интерполяционную таблицу и хотите сделать размер настраиваемым в сгенерированном коде. Когда вы используете Simulink.LookupTable
и Simulink.Breakpoint
объекты сконфигурировать данные об интерполяционной таблице для калибровки в сгенерированном коде, используйте SupportTunableSize
свойство объектов включить настраиваемый табличный размер. Когда вы не будете использовать эти классы, используйте параметр Support tunable table size in code generation в блоке n-D Lookup Table, чтобы включить настраиваемый табличный размер.
AssumeThat:
Вы задаете Simulink.Parameter
структура в функции предварительной нагрузки вашей модели:
p = Simulink.Parameter; p.Value.MaxIdx = [2 2]; p.Value.BP1 = [1 2 3]; p.Value.BP2 = [1 4 16]; p.Value.Table = [4 5 6; 16 19 20; 10 18 23]; p.DataType = 'Bus: slLookupTable'; p.CoderInfo.StorageClass = 'ExportedGlobal'; % Create bus object slBus1 from MATLAB structure Simulink.Bus.createObject(p.Value); slLookupTable = slBus1; slLookupTable.Elements(1).DataType = 'uint32';
Эти параметры блоков применяются в n-D блоке Lookup Table.
Параметр | Значение |
---|---|
Number of table dimensions | 2
|
Table data | p.Table |
Breakpoints 1 | p.BP1 |
Breakpoints 2 | p.BP2 |
Support tunable table size in code generation | on |
Maximum indices for each dimension | p.MaxIdx |
Сгенерированный
заголовочный файл содержит определение типа, которое выглядит примерно так.model
_types.h
typedef struct { uint32_T MaxIdx[2]; real_T BP1[3]; real_T BP2[3]; real_T Table[9]; } slLookupTable;
Сгенерированный
файл содержит код, который выглядит примерно так.model
C
/* Exported block parameters */ slLookupTable p = { { 2U, 2U }, { 1.0, 2.0, 3.0 }, { 1.0, 4.0, 16.0 }, { 4.0, 16.0, 10.0, 5.0, 19.0, 18.0, 6.0, 20.0, 23.0 } } ; /* More code */ /* Model output function */ static void ex_lut_nd_tunable_table_output(int_T tid) { /* Lookup_n-D: '<Root>/n-D Lookup Table' incorporates: * Inport: '<Root>/In1' * Inport: '<Root>/In2' */ Y = look2_binlcpw(U1, U2, p.BP1, p.BP2, p.Table, ... p.MaxIdx, p.MaxIdx[0] + 1U); /* Outport: '<Root>/Out1' */ ex_lut_nd_tunable_table_Y.Out1 = Y; /* tid is required for a uniform function interface. * Argument tid is not used in the function. */ UNUSED_PARAMETER(tid); }
Подсвеченная строка кода задает настраиваемый табличный размер для интерполяционной таблицы. Можно изменить размер и значения интерполяционной таблицы и установить точки останова данные, не регенерируя или перекомпилировав код.
Предположим, что у вас есть интерполяционная таблица с перечислимым классом как заданный:
classdef(Enumeration) Gears < Simulink.IntEnumType enumeration GEAR1(1), GEAR2(2), GEAR3(4), GEAR4(8), SPORTS(16), REVERSE(-1), NEUTRAL(0) end end
блок Lookup n-D имеет эти настройки:
Number of dimensions к 1
.
Значением Table data является [5 10 20 40 80 -5 0]
.
Значением Breakpoints 1 является enumeration('Gears')
.
Метод интерполяции является Плоским.
Для неупорядоченного поиска, набор Index search method к Linear search
и снимите флажок Begin index search using previous index result.
Симуляция производит векторный [10 -5 80]
, которые соответствуют GEAR2
реверс
, и SPORTS
.
HDL Coder™ обеспечивает дополнительные параметры конфигурации, которые влияют на реализацию HDL и синтезируемую логику.
Этот блок имеет одну, архитектуру HDL по умолчанию.
ConstrainedOutputPipeline | Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. |
InputPipeline | Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
OutputPipeline | Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
Этот блок поддерживает генерацию кода для комплексных сигналов.
MAX 10 настроек устройства
Если вы используете устройство Intel® MAX 10, чтобы сопоставить интерполяционную таблицу с RAM, добавьте эту команду Tcl при создании проекта в инструменте Куарта:
set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "SINGLE IMAGE WITH ERAM"
Необходимые настройки блока
Блокируйте установку | Поддержка HDL Coder |
---|---|
Number of table dimensions | Задайте до максимальной размерности 2. |
Breakpoints specification | Выберите Explicit values или Even spacing . |
Index search method | Выберите Evenly spaced points . |
Extrapolation method | Выберите Clip . Генератор кода не поддерживает экстраполяцию вне даже границ. |
Interpolation method | Выберите Flat или Linear point-slope . |
Diagnostic for out-of-range input | Выберите Error . Если вы задаете другие опции, HDL Coder генерирует предупреждение. |
Use last table value for inputs at or above last breakpoint | Установите этот флажок. |
Require all inputs to have the same data type | Установите этот флажок. |
Fraction | Выберите Inherit: Inherit via internal rule . |
Integer rounding mode | Выберите Zero пол , или Simplest . |
Избегайте генерации оператора деления
Если HDL Coder сталкивается с условиями, при которых операция деления требуется, чтобы совпадать с поведением симуляции модели, предупреждение выведено. Условия описали причину этот блок, чтобы испустить оператор деления. Когда вы используете этот блок в генерации HDL-кода, избегаете следующих условий:
Если блок сконфигурирован, чтобы использовать интерполяцию, оператор деления требуется. Чтобы избежать этого требования, установите Interpolation method : к Flat
.
Неравномерный табличный интервал. Генерация HDL-кода требует, чтобы блок использовал алгоритм равномерно разнесенных точек. Отображение блока от типа входных данных до основанного на нуле табличного индекса в целом требует деления. Когда интервал точки останова является точной степенью 2, это деление реализовано как сдвиг вместо как деление. Чтобы настроить интервал точки останова, настройте количество точек останова в таблице или различие между левыми и правыми границами области значений точки останова.
Табличный ввод данных и калибровка
Это - хорошая практика, чтобы структурировать вашу таблицу, таким образом, что интервал между точками останова является степенью двойки. Если интервал точки останова не удовлетворяет этому условию, HDL Coder выдает предупреждение. Когда интервал точки останова является степенью двойки, можно заменить операции деления на шаге перед поиском с операциями сдвига вправо.
Все порты на блоке требуют скалярных значений.
Simulink PLC Coder™ ограничил поддержку блоков интерполяционной таблицы. Кодер не поддерживает:
Количество размерностей, больше, чем 2
Метод интерполяции кубическим сплайном
Начните поиск по индексу с помощью предыдущего режима индексации
Кубический метод экстраполяции сплайна
Direct Lookup Table (n-D) | Interpolation Using Prelookup | Lookup Table Dynamic | Prelookup | Simulink.Breakpoint
| Simulink.LookupTable
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.