Аппроксимация двумерной функции
Simulink/Интерполяционные таблицы
HDL-кодер/интерполяционные таблицы
Блоки 1-D, 2-D и n-D Интерполяционная таблица оценивают выборочное представление функции в N переменных
где функция F может быть эмпирической. Блок преобразует входы в выход значение путем просмотра или интерполяции таблицы значений, которые вы задаете с параметрами блоков. Блок поддерживает плоский (константа), линейный (линейная точка-наклон), Лагранж (линейная Лагранжа), ближайший, кубический-сплайн и Акима сплайна методы интерполяции. Можно применить эти методы к таблице любой размерности от 1 до 30.
В следующем блоке первый вход идентифицирует первые размерные (строковые) точки останова, второй вход идентифицирует вторые размерные (столбцовые) точки останова и так далее.
Описание порядка расположения портов для различных ориентаций блоков см. в разделе Расположение портов после вращения или отражения.
Когда задан параметр конфигурации Math and Data Types > Use algorithms optimized for row-major array layout, поведение блоков 2-D и n-D Lookup Table изменяется с основного столбца на основную строку. Для этих блоков алгоритмы основной и основной строки могут отличаться в порядке выходных вычислений, что, возможно, приводит к слегка различным числовым значениям. Для этой возможности требуется Simulink® Coder™ или Embedded Coder® лицензия. Для получения дополнительной информации о поддержке основной строки, смотрите Генерация кода матриц и массивов (Simulink Coder).
Эти параметры блоков определяют данные точек по оси Х и данные таблицы.
Параметры блоков | Цель |
---|---|
Number of table dimensions | Задает количество размерностей в интерполяционной таблице. |
Breakpoints | Задает вектор точек по оси Х, который соответствует каждой размерности интерполяционной таблицы. |
Table data | Определяет связанный набор выхода значений. |
Совет
Равномерно разнесенные точки останова могут сделать сгенерированный код разделенным. Для получения дополнительной информации см. fixpt_evenspace_cleanup
и идентифицируйте сомнительные операции с фиксированной точкой (Embedded Coder).
Блоки n-D, 1-D и двумерная интерполяционная таблица генерируют вывод, просматривая или оценивая значения таблицы на основе входных значений.
Блочные входы | Поведение блоков интерполяционной таблицы n-D |
---|---|
Совпадайте со значениями индексов в наборах данных точек по оси Х | Вывод значения таблицы на пересечении строки, столбца и более высоких точек по размерности |
Не совпадайте со значениями индексов в наборах данных точек по оси Х, но находитесь в области значений | Интерполирует соответствующие значения таблицы с помощью выбранной Interpolation method |
Не совпадайте со значениями индексов в наборах данных точек по оси Х и находятся вне области значений | Экстраполирует значение выхода с помощью выбранной Extrapolation method |
Можно использовать Interpolation Using Prelookup блок с Prelookup блоком, чтобы выполнить эквивалентную операцию одного блока n-D Lookup Table. Эта комбинация блоков предлагает большую гибкость, которая может привести к более эффективной эффективности симуляции для линейных интерполяций.
Когда операция поиска является доступом к массиву, который не требует интерполяции, используйте блок Direct Lookup Table (n-D). Для примера, если у вас есть целое число значения k
и вы хотите k
первый элемент массива таблицы, y = table(k)
, интерполяция не нужна.
u1
- Входы первого измерения (строка)Реальные входные параметры для порта u1, сопоставленные с выходом значением путем просмотра или интерполяции таблицы значений, которые вы задаете.
Пример: 0:10
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
u2
- Входные параметры второго измерения (столбец)Реальные входные параметры для порта u2, сопоставленные с выходом значением путем просмотра или интерполяции таблицы значений, которые вы задаете.
Пример: 0:10
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
T
- Определите таблицу выходных значенийЗадайте таблицу выхода значений с сигналом, который настраивается во время выполнения.
Во время симуляции размер матрицы должен совпадать с размерностями, заданными параметром Number of table dimensions и длинами точек останова для каждого измерения таблицы. Однако во время редактирования блока схемы можно ввести пустую матрицу (заданную как []
) или неопределенная переменная рабочей области. Этот метод позволяет отложить указание правильно измеренной матрицы для данных таблицы и продолжить редактирование блока.
Чтобы включить этот порт, установите:
Data specification с Table and breakpoints
.
Table data с Input port
.
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
bp1
- Явные значения точек по оси ХЗадайте данные точек по оси Х явно, основываясь на значении параметра Breakpoints specification, с сигналом, который настраивается во время выполнения.
Если вы задаете Breakpoints specification Explicit values
введите набор точек по оси Х, который соответствует каждой размерности данных таблицы в каждой Breakpoints строке. Для каждой размерности задайте точки останова как вектор 1 на n или n на 1, значения которого строго монотонно увеличиваются.
Примечание
Чтобы задать точки прерывания в формате спецификаций с четными интервалами, установите Breakpoints specification равным Even spacing
и используйте параметры Breakpoints First точки и Spacing.
Чтобы включить этот порт, установите:
Data specification с Table and breakpoints
.
Breakpoints specification с Explicit values
.
Breakpoints 1 с Input port
.
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
bp2
- Явные значения точек по оси ХЗадайте данные точек по оси Х явно, основываясь на значении параметра Breakpoints specification, с сигналом, который настраивается во время выполнения.
Если вы задаете Breakpoints specification Explicit values
введите набор точек по оси Х, который соответствует каждой размерности данных таблицы в каждой Breakpoints строке. Для каждой размерности задайте точки останова как вектор 1 на n или n на 1, значения которого строго монотонно увеличиваются.
Примечание
Чтобы задать равномерно расположенные данные точек по оси Х, используйте параметр Breakpoints. Вы не можете задать равномерно расположенные данные точек по оси Х через вход порт.
Чтобы включить этот порт, установите:
Data specification с Table and breakpoints
.
Breakpoints specification с Explicit values
.
Breakpoints 2 с Input port
.
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
Port_1
- Выход вычисляется путем просмотра или оценки значений таблицыВыход, сгенерированное путем просмотра или оценки значений таблицы на основе входа значений.
Когда блок вводит... | Блок Интерполяционная таблица n-D... |
---|---|
Совпадайте со значениями индексов в наборах данных точек по оси Х | Вывод значения таблицы на пересечении строки, столбца и более высоких точек по размерности |
Не совпадайте со значениями индексов в наборах данных точек по оси Х, но находитесь в области значений | Интерполирует соответствующие значения таблицы с помощью выбранной Interpolation method |
Не совпадайте со значениями индексов в наборах данных точек по оси Х и находятся вне области значений | Экстраполирует значение выхода с помощью выбранной Extrapolation method |
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Number of table dimensions
- Количество размерностей интерполяционной таблицы2
(по умолчанию) | 1
| 3
| 4
| ...
| 30
Введите количество размерностей интерполяционной таблицы. Этот параметр определяет:
Количество независимых переменных для таблицы и количество входов блоков
Количество заданных наборов точек по оси Х
Чтобы указать... | Делай это... |
---|---|
1, 2, 3 или 4 |
Выберите значение из раскрывающегося списка. |
Большее количество размерностей таблицы |
Введите положительное целое число непосредственно в поле. Максимальное количество размерностей таблицы, поддерживаемых этим блоком, составляет 30. |
Например, таблица с размером M x N x... означает, что размер размерности 1 M, размер размерности 2 N и т.д. M должны совпадать с длиной первой точки прерывания, N должны совпадать с длиной второй точки прерывания и т.д.
Параметры блоков:
NumberOfTableDimensions
|
Тип: Вектор символов |
Значения:
'1' | '2' | '3' | '4' | ... | 30
|
По умолчанию:
'2'
|
Data specification
- Метод спецификации таблицы и точки остановаTable and breakpoints
(по умолчанию) | Lookup table object
В списке выберите:
Table and breakpoints
- Укажите данные таблицы и точки останова. Выбор этой опции включает следующие параметры:
Table data
Breakpoints specification
Breakpoints 1
Breakpoints 2
Edit table and breakpoints
Чтобы задать таблицу и точки останова, используя входные порты, смотрите параметр Source.
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
) объект. Если a Simulink.LookupTable
объект не существует, нажмите кнопку действия и выберите Create. Соответствующие параметры объекта новой интерполяционной таблицы автоматически заполняются информацией о блоках.
Чтобы включить этот параметр, установите Data specification равным Lookup table object
.
Параметры блоков:
LookupTableObject
|
Тип: Вектор символов |
Значения: имя Simulink.LookupTable объект |
По умолчанию:
''
|
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'
|
Source
- Источник данных таблицы и точек по оси ХDialog
(по умолчанию) | Input port
Источник данных таблицы и точки останова, заданный как:
Dialog
- Задайте данные таблицы или точки по оси Х в Value параметре.
Input port
- Задайте данные таблицы или точки по оси Х через связанный входной порт. Через вход порт можно задать только до трех наборов данных точек по оси Х. Чтобы задать данные точек по оси Х выше трех, используйте параметр Value.
Примечание
Использование порта входа для задания данных таблицы или точек по оси Х может негативно повлиять на эффективность блоков для симуляции из-за проверок во время выполнения.
Чтобы включить этот параметр, установите Data specification равным Table and breakpoints
.
Чтобы включить связанный Value, установите этот параметр равным Dialog
.
Чтобы включить связанный входной порт, установите этот параметр равным Input port
.
Установка этого параметра на Input port
отключает поле Value и скрывает соответствующий параметр на вкладке Data Types.
Установка этого параметра на Input port
для любого из параметров отключает кнопку Edit Table and Breakpoints.
Параметры блоков:
TableSource | BreakpointsForDimension1Source | BreakpointsForDimension2Source | BreakpointsForDimension3Source
|
Тип: Вектор символов |
Значения:
Dialog | Input port |
По умолчанию:
'Dialog'
|
Table data
- Определите таблицу выходных значений[4 5 6; 16 19 20; 10 18 23]
(по умолчанию) | матрица значений Введите таблицу выхода значений в связанное поле Value.
Во время симуляции размер матрицы должен совпадать с размерностями, заданными параметром Number of table dimensions. Однако во время редактирования блока схемы можно ввести пустую матрицу (заданную как []
) или неопределенная переменная рабочей области. Этот метод позволяет отложить указание правильно измеренной матрицы для данных таблицы и продолжить редактирование блока.
Чтобы включить этот параметр, установите:
Data specification с Table and breakpoints
.
Table data: Source с Dialog
.
Параметры блоков:
Table
|
Тип: Вектор символов |
Значения: матрица значений таблицы |
По умолчанию:
'[4 5 6; 16 19 20; 10 18 23]'
|
Breakpoints
- Явные значения точек по оси Х или первая точка и интервалы между точками Х[1:3]
(по умолчанию) | вектор 1 на n или n на 1 монотонно увеличивающихся значенийЗадайте данные точек по оси Х явно или как равномерно разнесенные точки Х на основе значения параметра Breakpoints specification.
Если вы задаете Breakpoints specification Explicit values
введите набор точек по оси Х, который соответствует каждой размерности данных таблицы в каждой Breakpoints строке связанного поля Value. Для каждой размерности задайте точки останова как вектор 1 на n или n на 1, значения которого строго монотонно увеличиваются.
Если вы задаете Breakpoints specification Even spacing
введите First point и Spacing параметров в каждой строке Breakpoints, чтобы сгенерировать равномерно разнесенные точки останова в соответствующей размерности. Данные таблицы определяют количество равномерно разнесенных точек.
Чтобы включить этот параметр, установите
Data specification с Table and breakpoints
.
Breakpoints: Source с Dialog
.
Когда параметр Breakpoints specification установлен в Even spacing
можно задавать данные точек по оси Х только в диалоговом окне.
Параметры блоков:
BreakpointsForDimension1
|
Тип: Вектор символов |
Значения: 1 на n или n на 1 вектор монотонно увеличивающихся значений |
По умолчанию:
'[1:3]'
|
First point
- Первая точка равномерно разнесенных данных точек по оси Х1
(по умолчанию) | скаляромЗадайте первую точку в ваших равномерно разнесенных данных точек по оси Х как действительный, конечный, скаляр. Этот параметр доступен, когда Breakpoints specification установлено на Even spacing
.
Чтобы включить этот параметр, установите Data specification равным Table and breakpoints
, и Breakpoints specification к Even spacing
.
Параметры блоков:
BreakpointsForDimension1FirstPoint | BreakpointsForDimension2FirstPoint |
Тип: Вектор символов |
Значения: вещественное, конечное, скаляр |
По умолчанию:
'1'
|
Spacing
- Интервал между равномерно расположенными точками останова1
(по умолчанию) | скаляромЗадайте интервал между точками в данных точек останова с равномерными интервалами.
Чтобы включить этот параметр, установите Data specification равным Table and breakpoints
, и Breakpoints specification к Even spacing
.
Параметры блоков:
BreakpointsForDimension1Spacing | BreakpointsForDimension2Spacing |
Тип: Вектор символов |
Значения: положительные, реальные, конечные, скалярные |
По умолчанию:
'1'
|
Edit table and breakpoints
- Запуск диалогового окна «Редактор интерполяционных таблиц»Нажмите эту кнопку, чтобы открыть редактор интерполяционных таблиц. Для получения дополнительной информации см. раздел «Редактирование интерполяционных таблиц» в документации Simulink.
Нажатие этой кнопки для объекта интерполяционной таблицы позволяет вам отредактировать объект и сохранить новые значения для объекта.
Interpolation method
- Метод интерполяции между значениями точек по оси ХLinear point-slope
(по умолчанию) | Flat
| Nearest
| Linear Lagrange
| Cubic spline
| Akima spline
Когда вход падает между значениями точек по оси Х, блок интерполирует выходное значение с помощью соседних точек по оси Х. Для получения дополнительной информации о методах интерполяции см. Раздел «Методы интерполяции».
Если вы выбираете Cubic spline
блок поддерживает только скалярные сигналы. Другие методы интерполяции поддерживают нескалярные сигналы.
Если вы выбираете Akima spline
метод экстраполяции может быть только Akima spline
.
Когда задан метод изменённой Интерполяции Акима, этот блок не поддерживает:
Размещение массива с основной строкой и алгоритмы, оптимизированные для размещения массива с основной строкой
Масштабированные типы данных с двойной и фиксированной точками
Simulink.LookupTable
объекты
Генерация кода, когда установлен флажок Code 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' |
Apply full precision fixed-point algorithm when possible
- Более точный поиск таблицы с фиксированной точкойoff
(по умолчанию) | on
Используйте этот флажок, чтобы включить полный поиск алгоритма фиксированной точки для линейного поиска интерполяции, когда это возможно. Этот алгоритм обычно достигает лучшей точности для аппаратно эффективных режимов округления с фиксированной точкой.
Чтобы включить этот параметр, установите:
Number of table dimensions с 1
.
Interpolation method с Linear point-slope
.
Extrapolation method с Clip
.
Параметры блоков:
ApplyFullPrecisionForLinearInterpolation |
Тип: Вектор символов |
Значения:
'off' | 'on'
|
По умолчанию:
'off'
|
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≦<reservedrangesplaceholder0><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. Для получения дополнительной информации см. Раздел «Задание шага расчета».
Этот параметр не отображается, если он явно не установлен на значение, отличное от -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
A Simulink.Parameter
значение которого при генерации кода на единицу меньше, чем размерности данных таблицы. Для получения дополнительной информации смотрите Настраиваемый размер таблицы в Сгенерированном коде.
Чтобы включить этот параметр, выберите Support tunable table size in code generation. При настройке этого параметра в сгенерированном коде сообщите новые данные таблицы и точки останова вместе с настроенными значениями параметров.
Параметры блоков:
MaximumIndicesForEachDimension |
Тип: Вектор символов |
Значения: скаляр или вектор положительных целых значений |
По умолчанию:
'[]'
|
Table data
- Тип данных табличных данныхInherit: Same as output
(по умолчанию) | double
| single
| half
| 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, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.
Совет
Задайте тип данных таблицы, отличный от типа выходных данных для этих случаев:
Более низкие требования к памяти для хранения данных таблицы, которая использует меньший тип, чем выходной сигнал
Совместное использование предварительных данных таблицы между двумя блоками n-D Lookup Table с различными типами выходных данных
Совместное использование пользовательских данных таблицы хранения в сгенерированном коде для блоков с различными типами выходных данных
Чтобы включить этот параметр, установите Table data с вкладки Table and Breakpoints на Dialog
.
Параметры блоков: TableDataTypeStr |
Тип: Вектор символов |
Значения:
'Inherit: Inherit from 'Table data'' | 'Inherit: Same as output' | 'double' | 'single' | 'half' | '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
| half
| 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, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.
Совет
Задайте тип данных точек по оси Х, отличный от соответствующего типа входных данных для этих случаев:
Более низкие требования к памяти для хранения данных точек по оси Х, которые используют меньший тип, чем входной сигнал
Совместное использование предварительных данных точек по оси Х между двумя блоками n-D Lookup Table с различными типами входных данных
Совместное использование пользовательских данных точек по оси Х в сгенерированном коде для блоков с различными типами входных данных
Задайте тот же наклон и смещение для типа данных точек по оси Х и его соответствующего типа входных данных, если любой из них имеет тип данных с фиксированной точкой.
Чтобы включить этот параметр, установите соответствующий параметр Breakpoints с вкладки Table and Breakpoints равным Dialog
.
Параметры блоков: BreakpointsForDimension1DataTypeStr | BreakpointsForDimension2DataTypeStr| ... | BreakpointsForDimension30DataTypeStr |
Тип: Вектор символов |
Значения:
'Inherit: Same as corresponding input' | 'Inherit: Inherit from 'Breakpoint data'' | 'double' | 'single' | 'half' | '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, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя 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
(по умолчанию) | Inherit: Inherit via internal rule
| 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
Имя встроенного типа данных, например single
Имя объекта типа данных, например, Simulink.NumericType
объект
Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя 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
| half
| 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, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.
Параметры блоков: OutDataTypeStr |
Тип: Вектор символов |
Значения:
'Inherit: Inherit via back propagation' | 'Inherit: Inherit from table data' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | '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
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типов данных, заданных в этом блоке. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (Fixed-Point Designer).
Параметры блоков: LockScale |
Тип: Вектор символов |
Значения: 'off' | 'on' |
По умолчанию: 'off' |
Integer rounding mode
- Режим округления для операций с фиксированной точкой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, чтобы включить настраиваемый размер таблицы.
Предположим, что:
Вы задаете 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 Интерполяционная таблица.
Параметр | Значение |
---|---|
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
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
, REVERSE
, и SPORTS
.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику. Для получения информации о поддержке генерации HDL-кода для блоков двумерная интерполяционная таблица, смотрите HDL Code Generation.
Direct Lookup Table (n-D) | Interpolation Using Prelookup | Lookup Table Dynamic | Prelookup | Simulink.Breakpoint
| Simulink.LookupTable
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.