Direct Lookup Table (n-D)

Индекс в n-мерную таблицу для извлечения элемента, вектора или 2-D матрицы

  • Библиотека:
  • Simulink/Интерполяционные таблицы

    HDL-кодер/интерполяционные таблицы

  • Direct Lookup Table (n-D) block

Описание

Блок Direct Интерполяционная Таблица (n-D) индексируется в n-мерную таблицу, чтобы извлечь элемент, вектор или 2-D матрицу. Первый индекс выбора соответствует верхнему (или левому) входному порту. Можно принять решение предоставить данные таблицы в качестве входов для блока или определить данные таблицы в диалоговом окне блока. Количество портов входа и размер выхода зависят от количества размеров таблицы и выхода среза вы выбираете.

Если вы выбираете вектор из 2-D таблицы, выходным вектором может быть столбец или строка, в зависимости от настройки параметра конфигурации модели Math and Data Types > Use algorithms optimized for row-major array layout. Блочные входы начинаются с нуля индексы (для получения дополнительной информации смотрите параметр Inputs select this object from table.

Блок Direct Lookup Table поддерживает символьные размерности.

Блочные входы и выходы

Блок Direct Lookup Table (n-D) использует входы как нулевые индексы в n-мерную таблицу. Количество входов изменяется с формой выхода: элемент, вектор или 2-D матрица.

Набор выхода значений определяется как параметр Table data. Для поведения алгоритма основного столбца по умолчанию первый вход задает базовый индекс для размерности таблицы, которая на один выше, чем выход размерность. Следующий вход задает нулевой индекс для следующей размерности таблицы и так далее.

ВыходВыходная размерностьРазмерность таблицы, которое преобразуется в первый вход
Элемент01
Вектор12
Матрица23

Предположим, что вы хотите выбрать вектор значений из 4-D таблицы.

Применяется следующее отображение входного порта блока с размерностью таблицы.

Этот входной порт...Индекс для этой размерности таблицы...
12
23
34

Изменения внешнего вида значка блока

В зависимости от установленных параметров значок блока изменяет внешний вид. Для размерностей таблицы выше 4 значок совпадает с 4-D версией, но показывает точное количество размерностей в верхней части.

Когда вы используете параметр Table data, вы видите эти значки для поведения по умолчанию column-major. Некоторые значки отличаются, когда вы выбираете параметр конфигурации Math and Data Types > Use algorithms optimized for row-major array layout.

Объект, который вводит выбор из таблицыКоличество Таблицы Размерностей
1234

Элемент

Вектор

2-D матрица

Не применяется

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

Объект, который вводит выбор из таблицыКоличество Таблицы Размерностей
1234

Элемент

Вектор

2-D матрица

Не применяется

Порты

Вход

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

Для алгоритма основного столбца по умолчанию, первого входа порта, задающего базовый индекс для размерности таблицы, которая на один выше выхода размерности (0, 1 или 2). Следующий вход задает нулевой индекс для следующей размерности таблицы и так далее. Все входы индекса должны быть реальными.

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

Для алгоритма основного столбца по умолчанию N-й входа порт, задающий базовый индекс для размерности таблицы, которая N выше размерности выхода (0, 1 или 2). Количество входов изменяется с формой выхода. Все входы индекса должны быть реальными.

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

Данные таблицы, заданные в виде вектора, матрицы или N-D массива. Размер таблицы должен совпадать с размерностями параметра Number of dimensions. Тип выходных данных блока совпадает с типом данных таблицы.

Зависимости

Чтобы включить этот порт, установите флажок Make table an input.

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

Выход

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

Выходной срез, предоставленный в виде скаляра, вектора или 2-D матрицы. Размер выходного блока определяется настройкой параметра Inputs select this object from table. Тип выходных данных совпадает с типом данных таблицы.

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

Параметры

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

Главный

Таблица

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

Чтобы указать...Делай это...

1, 2, 3 или 4

Выберите значение из раскрывающегося списка.

Большее количество размерностей таблицы

Введите положительное целое число непосредственно в поле.

Максимальное количество размерностей таблицы, поддерживаемых этим блоком, составляет 30.

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

Параметры блоков: NumberOfTableDimensions
Тип: Вектор символов
Значения: '1' | '2' | '3' | '4' | ... |'30'|
По умолчанию: '2'

Установите этот флажок, чтобы предоставить данные таблицы блоку Direct Lookup Table (n-D) в качестве входа. Когда вы устанавливаете этот флажок, новый входной порт, T, появляется. Используйте этот порт для ввода данных таблицы.

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

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

Задайте таблицу выхода значений. Размер таблицы должен совпадать с размерностями параметра Number of table dimensions.

Совет

Во время редактирования блока схемы можно оставить Table data поле пустым. Но для симуляции необходимо соответствовать количеству размерностей в Table data с Number of table dimensions. Для получения дополнительной информации о том, как создать многомерный MATLAB® массивы, см. «Многомерные массивы».

Щелкните Edit, чтобы открыть Редактор интерполяционных таблиц. Для получения дополнительной информации см. раздел «Редактирование интерполяционных таблиц».

Зависимости

Чтобы включить поле Table data, снимите флажок Make table an input.

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

Параметры блоков: Table
Тип: Вектор символов
Значения: scalar, vector, matrix, or N-D array
По умолчанию: '[4 5 6;16 19 20;10 18 23]'
Алгоритм

Задайте, являются ли выходные данные одним элементом, вектором или 2-D матрицей. Количество входа портов для индексации зависит от вашего выбора.

ВыборКоличество портов Входа для индексации
Element Количество размерностей в таблице
Vector Количество размерностей таблицы -1
2-D Matrix Количество размерностей таблицы -2

Эта нумерация соответствует индексации MATLAB. Для примера, если у вас есть 4-D таблица данных, следуйте этим рекомендациям.

Для доступа...Укажите...Как в...
ЭлементЧетыре индекса array(1,2,3,4)
ВекторТри индекса array(:,2,3,4)(алгоритм основного столбца по умолчанию)
Матрица 2-DДва индекса array(:,:,3,4)(алгоритм основного столбца по умолчанию)

Совет

Когда задан параметр конфигурации Math and Data Types > Use algorithms optimized for row-major array layout, поведение блока Direct Интерполяционная Таблица изменяется с основного столбца на основную строку. Для этого блока алгоритмы основной и основной строки могут различаться семантически при выходных вычислениях, что приводит к различным числовым значениям. Например, предположим, что Inputs select this object from table параметр установлен на Vector. Элементы выбранного вектора смежны в памяти хранилища таблиц. В этой таблице показан алгоритм основной и основной строки в зависимости от размерности таблицы:

Табличные РазмерностиАлгоритм основного столбцаАлгоритм основной строки
2-D таблицаВектор-столбец выбранВектор-строка выбран
3-D и более высокая таблицаВыходной вектор выбирается из первой размерности таблицыВыходной вектор выбирается из последней размерности таблицы

Рассмотрим алгоритмы прямого поиска основной строки и основной столбца с векторными выходами из 3-D таблицы. Последняя размерность является третьей размерностью 3-D таблицы. Из-за семантических изменений прямой поиск по основному столбцу и основной строке может вывести различные размер вектора и числовые значения.

Этот рисунок показывает блок Direct Lookup Table (n-D), сконфигурированный с таблицей 3-D и выходом вектора. По умолчанию значок блока показывает алгоритм основного столбца.

Чтобы иметь тот же блок, использующий алгоритм row-major, измените параметр Math and Data Types > Use algorithm optimized for row-major layout конфигурации модели и перекомпилируйте. Значок блока изменяется, чтобы отразить изменение алгоритма, оптимизированного для поведения основной строки.

Для получения дополнительной информации о поддержке основной строки смотрите Row-Major Array Layout: Упрощение интегрирования с внешним кодом C/C + + для интерполяционной таблицы и других блоков (Simulink Coder ).

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

Параметры блоков: InputsSelectThisObjectFromTable
Тип: Вектор символов
Значения: 'Element' | 'Vector' | '2-D Matrix'
По умолчанию: 'Element'

Укажите, отображать ли предупреждение или ошибку, когда индекс находится вне области значений относительно размерности таблицы. Опции включают:

  • None - Нет ответа.

  • Warning - Отобразите предупреждение и продолжите симуляцию.

  • Error - Завершите симуляцию и отобразите ошибку.

Когда вы выбираете None или Warningблок зажимает индексы вне области допустимого для соответствия размерностям таблицы. Для примера, если заданный индекс равен 5,3, а максимальный индекс для этой таблицы размерности равен 4, блок зажимает индекс равным 4.

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

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

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

Зависимости

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

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

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

Генерация кода

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

ФлажокРезультатКогда использовать

on

Сгенерированный код не включает условные операторы для проверки входных входов точек прерывания вне области допустимого.

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

Для эффективности кода

off

Сгенерированный код включает условные операторы для проверки входных входов вне области допустимого.

Для критически важных приложений

Если ваш вход не находится вне области значений, можно установить флажок Remove protection against out-of-range index in generated code для эффективности кода. По умолчанию этот флажок снимается. Для критически важных приложений не устанавливайте этот флажок. Если вы хотите установить флажок Remove protection against out-of-range index in generated code, сначала проверьте, что входы вашей модели находятся в области значений. Для примера:

  1. Снимите флажок Remove protection against out-of-range index in generated code.

  2. Установите параметр Diagnostic for out-of-range input равным Error.

  3. Симулируйте модель в режим normal mode.

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

  5. Когда симуляция больше не генерирует входные ошибки вне области допустимого, установите флажок 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® Проектируйте Verifier™ лицензию, рассмотрите использование проверки Detect Block Input Range Violutions (Simulink Design Verifier).

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

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

Атрибуты таблицы

Примечание

Параметры на панели Table Attributes недоступны, если вы выбираете Make table an input. В этом случае блок наследует все атрибуты таблицы от порта входа с меткой T.

Задайте минимальное значение для данных таблицы. Значение по умолчанию [] (не определено).

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

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

Задайте максимальное значение для данных таблицы. Значение по умолчанию [] (не определено).

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

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

Задайте тип данных таблицы. Вы можете установить его на:

  • Правило, которое наследует тип данных, например Inherit: Inherit from 'Table data'

  • Имя встроенного типа данных, например single

  • Имя класса типа данных, например, класса перечисленных типов данных

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.

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

Параметры блоков: TableDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Inherit from 'Table data'' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'boolean' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'Enum: <class name>'|'<data type expression>'
По умолчанию: 'Inherit: Inherit from 'Table data''

Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типов данных, заданных в этом блоке. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (Fixed-Point Designer).

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

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

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

Типы данных

Boolean | double | enumerated | фиксированную точку[a] | half | integer | single

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

yes

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

yes

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

no

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

no

[a] Этот блок поддерживает типы данных с фиксированной точкой только для данных 'Table'.

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

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

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