Direct Lookup Table (n-D)

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

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

    HDL Coder / Интерполяционные таблицы

  • Direct Lookup Table (n-D) block

Описание

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

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

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

Блокируйте вводы и выводы

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

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

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

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

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

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

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

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

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

Возразите что Входной Выбор из ТаблицыКоличество табличных размерностей
1234

Элемент

Вектор

2D Матрица

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

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

Возразите что Входной Выбор из ТаблицыКоличество табличных размерностей
1234

Элемент

Вектор

2D Матрица

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

Порты

Входной параметр

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

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

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

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

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

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

Зависимости

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

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

Вывод

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

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

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

Параметры

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

Основной

Таблица

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

Задавать...Сделайте это...

1, 2, 3, или 4

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

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

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

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

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

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

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

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

Параметры блоков: TableIsInput
Ввод: символьный вектор
Values: '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]'
Алгоритм

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

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

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

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

Советы

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

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

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

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

Чтобы иметь тот же блок используют упорядоченный по строкам алгоритм, изменяют Math and Data Types> параметр конфигурации Use algorithm optimized for row-major 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® Лицензия Design Verifier™, рассмотрите использование Обнаружить Нарушений Входного диапазона Блока (Simulink Design Verifier) проверка.

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

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

Табличные атрибуты

Примечание

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

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

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

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

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

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

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

Задайте тип данных table. Можно установить его на:

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

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

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

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

Нажмите кнопку Show data type assistant, чтобы отобразить 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 Tool заменили типы данных, которые вы задаете на этом блоке. Для получения дополнительной информации смотрите Блокировку Установка Типа Выходных данных (Fixed-Point Designer).

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

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

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

Типы данных

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

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

yes

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

yes

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

no

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

no

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

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

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

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