Simulink.LookupTable class

Пакет: Simulink
Суперклассы:

Сохраните и поделитесь интерполяционной таблицей и данными точек по оси Х, сконфигурируйте данные для генерации кода ASAP2 и AUTOSAR

Описание

Объект Simulink.LookupTable класс хранит интерполяционную таблицу и данные точек по оси Х. Можно использовать эти данные в блоке интерполяционной таблицы, таком как блок n-D Lookup Table. С помощью объекта можно задать типы данных и настройки генерации кода для таблицы и наборов точек по оси Х.

Когда вы храните все данные таблицы и набора точек по оси Х в одной Simulink.LookupTable объект, все данные появляются в одной структуре в сгенерированном коде. Чтобы сконфигурировать генерацию кода STD_AXIS для калибровки, используйте этот метод.

Чтобы поделиться набором точек по оси Х между несколькими интерполяционными таблицами, например, для генерации кода COM_AXIS, используйте Simulink.Breakpoint объект в одном или нескольких блоках Prelookup. Использование Simulink.LookupTable объекты в Interpolation Using Prelookup блоках. Затем сконфигурируйте объекты интерполяционной таблицы для ссылки на объект точки останова. Для получения дополнительной информации смотрите Пакеты Общие данные точек по оси Х и Данные таблицы для интерполяционных таблиц.

В подкласс из Simulink.LookupTable и наследовать от этого базового класса, введите этот синтаксис как первую линию вашего файла определения класса, где myLookuptable является именем вашего нового класса:

classdef myLookuptable < Simulink.LookupTable

Пример для подклассирования см. в разделе Определение классов данных.

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

Конструкция

LUTObj = Simulink.LookupTable возвращает Simulink.LookupTable LUTObj объекта со значениями свойств по умолчанию.

Как создать Simulink.LookupTable используя Model Explorer, используйте кнопку на панели инструментов. Имя по умолчанию для объекта Object.

Диалоговое окно свойств

Установка значения Breakpoints specification Explicit (по умолчанию) отображает это представление диалогового окна свойств.

В нижней части диалогового окна содержатся таблица и значения данных точек по оси Х. Для получения дополнительной информации об этой табличной области смотрите View Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface. Содержимое этой таблицы эквивалентно свойству Value, видимому, когда для свойства Breakpoints specification задано значение Even spacing или Reference.

Number of table dimensions

Количество размерностей интерполяционной таблицы. Задайте целое число значения до 30 (включительно). Для примера, чтобы представлять трехмерную интерполяционную таблицу, задайте целое число 3.

Table

Информация для данных таблицы. Можно сконфигурировать следующие характеристики:

Value

Данные таблицы. Задайте числовой вектор или многомерный массив с по крайней мере двумя элементами.

Данные Value таблицы совпадают с содержимым табличного интерфейса, видимого в нижней части диалогового окна, когда для свойства Breakpoints specification задано значение Explicit. Для получения дополнительной информации об этой табличной области смотрите View Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface.

Примечание

Это свойство появляется, только если Breakpoints specification установлено на Even spacing или Reference.

Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) пока выражение возвращает числовой вектор или многомерный массив. При клике Apply или OK объект выполняет выражение и использует результат, чтобы задать значение этого свойства.

Когда вы задаете Data type auto, чтобы задать Value, используйте типизированное выражение, такое как single([1 2 3]) или использовать fi (Fixed-Point Designer) конструктор для встраивания fi объект.

Когда вы задаете данные таблицы с тремя или более размерностями, Value отображает данные как выражение, которое содержит вызов reshape функция. Чтобы изменить значения в данных, измените первый аргумент reshape вызов, который содержит все значения в сериализованном векторе. Когда вы добавляете или удаляете элементы вдоль размерности, необходимо также исправить аргумент, который представляет длину изменённой размерности.

Вы можете редактировать эти данные с помощью более интуитивно понятного интерфейса в блоке интерполяционной таблицы. См. «Импорт данных интерполяционной таблицы из MATLAB».

Data type

Тип данных табличных данных. Настройкой по умолчанию является auto, что означает, что данные таблицы получают тип данных от значения, заданного в Value. Если вы используете нетиповое выражение, такое как [1 2 3] чтобы задать Value, данные таблицы используют тип данных double. Если вы задаете типизированное выражение, такое как single([1 2 3]) или fi объект, данные таблицы используют тип данных, заданный выражением или объектом. Также поддерживаются перечисленные типы данных.

Можно явным образом задать целочисленный тип данных, половинный тип данных, тип данных с плавающей точкой, тип данных с фиксированной точкой или выражение типа данных, такое как имя Simulink.AliasType объект.

Для получения дополнительной информации о типах данных в Simulink®, см. Типы данных, поддерживаемые Simulink. Чтобы решить, как управлять типами данных таблицы и данных точек по оси Х в Simulink.LookupTable и Simulink.Breakpoint объекты, см. «Типы управляющих данных объектов интерполяционной таблицы (Simulink Coder)».

Dimensions

Размерности данных интерполяционной таблицы.

Чтобы использовать символические размерности, задайте вектор символов. Смотрите Реализуйте Варианты Размерности для Размеров Массивов в Сгенерированном Коде (Embedded Coder).

Min

Минимальное значение элементов в данных таблицы. Значение по умолчанию пустое, []. Можно задать числовое, действительное значение.

Для получения дополнительной информации о том, как Simulink использует это свойство, смотрите Задайте Минимальное и Максимальное Значения для Параметров блоков.

Max

Максимальное значение элементов в данных таблицы. Значение по умолчанию пустое, []. Можно задать числовое, действительное значение.

Для получения дополнительной информации о том, как Simulink использует это свойство, смотрите Задайте Минимальное и Максимальное Значения для Параметров блоков.

Stored Int Min

Для Simulink.LookupTable объекты с типом данных с фиксированной точкой, минимальным значением элементов в данных таблицы, заданным как сохраненное целое число. Значение определяется из реальной Min значений. Это свойство доступно только в диалоговом окне свойств.

Stored Int Max

Для Simulink.LookupTable объекты с типом данных с фиксированной точкой, максимальным значением элементов в данных таблицы, заданным как сохраненное целое число. Значение определяется из реальной Max значений. Это свойство доступно только в диалоговом окне свойств.

Unit

Физические единицы измерения элементов в интерполяционной таблице. Вы можете задать текст, такой как degC. См. Спецификацию единиц измерения в моделях Simulink.

Field name

Имя поля структуры в сгенерированном коде. Это поле сохраняет данные таблицы, если вы конфигурируете Simulink.LookupTable объект, который появится в сгенерированном коде как структура. Значение по умолчанию Table. Чтобы изменить имя поля, укажите текст.

Description

Описание интерполяционной таблицы. Вы можете задать текст, такой как This lookup table describes the action of a pump.

Breakpoints

Информация о наборе точек по оси Х. Каждая строка является одним набором точек по оси Х. Чтобы сконфигурировать дополнительные наборы точек по оси Х, задайте целое значение в Number of table dimensions поле.

Для наборов точек по оси Х можно сконфигурировать следующие характеристики:

Specification

Источник информации о наборах точек по оси Х, заданный как Explicit values (по умолчанию), Reference, или Even spacing.

  • Для хранения всех данных таблицы и набора точек по оси Х в Simulink.LookupTable объект, установите Specification равным Explicit values.

    The Simulink.LookupTable объект появляется в сгенерированном коде как одна структурная переменная.

  • Хранение данных таблицы в Simulink.LookupTable объект и сохраните данные набора точек по оси Х в Simulink.Breakpoint объекты, установите Specification равным Reference.

    The Simulink.LookupTable объект появляется в сгенерированном коде как отдельная переменная массива, содержащая данные таблицы. Каждый Simulink.Breakpoint объект появляется как отдельный массив или структурная переменная, которая содержит данные набора точек по оси Х.

  • Для хранения данных таблицы и равномерно разнесенных точек по оси Х в Simulink.LookupTable объект, установите Specification равным Even spacing. Используйте параметры First point и Spacing, чтобы сгенерировать набор равномерно расположенных точек останова.

Примечание

Когда Specification установлено на Explicit values или Even spacingможно изменить порядок настраиваемого размера, точек по оси Х и записей таблицы в объектной структуре интерполяционной таблицы.

Support tunable size

Спецификация, позволяющая настраивать эффективный размер таблицы в сгенерированном коде. В коде структура, которая соответствует объекту, имеет дополнительное поле для каждого вектора точки останова. Каждое дополнительное поле сохраняет длину соответствующего вектора точек по оси Х. Можно изменить значение каждого поля, чтобы настроить эффективный размер таблицы.

Это свойство появляется только, если для Specification задано значение Explicit values или Even spacing.

Примечание

Если вы храните данные точек по оси Х в Simulink.Breakpoint объекты путем установки Specification на Reference, чтобы включить настройку размера таблицы в сгенерированном коде, используйте свойство Support tunable size каждого Simulink.Breakpoint объект.

Value

Данные для набора точек по оси Х. Задайте числовой вектор с как минимум двумя элементами.

Примечание

Это свойство появляется только в том случае, если Breakpoints specification установлено в Even spacing или Reference. Данные Value набора точек по оси Х совпадают с содержимым табличного интерфейса, видимого в нижней части диалогового окна, когда для свойства Breakpoints specification задано значение Explicit. Для получения дополнительной информации об этой табличной области смотрите View Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface.

Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) пока выражение возвращает числовой вектор. При клике Apply или OK объект выполняет выражение и использует результат, чтобы задать значение этого свойства.

Когда вы задаете Data type auto, чтобы задать Value, используйте типизированное выражение, такое как single([1 2 3]) или использовать fi (Fixed-Point Designer) конструктор для встраивания fi объект.

Вы можете редактировать эти данные с помощью более интуитивно понятного интерфейса в блоке интерполяционной таблицы. См. «Импорт данных интерполяционной таблицы из MATLAB».

Data type

Тип данных набора точек по оси Х. Настройкой по умолчанию является auto, что означает, что набор точек по оси Х получает тип данных от значения, заданного в Value. Если вы используете нетиповое выражение, такое как [1 2 3] чтобы задать Value, данные точек по оси Х используют тип данных double. Если вы задаете типизированное выражение, такое как single([1 2 3]) или fi объект, данные точек по оси Х используют тип данных, заданный выражением или объектом.

Можно явным образом задать целочисленный тип данных, тип данных с плавающей точкой, тип данных с фиксированной точкой или выражение типа данных, такое как имя Simulink.AliasType объект.

Для получения дополнительной информации о типах данных в Simulink, см. Типы данных, поддерживаемые Simulink. Чтобы решить, как управлять типами данных таблицы и данных точек по оси Х в Simulink.LookupTable и Simulink.Breakpoint объекты, см. «Типы управляющих данных объектов интерполяционной таблицы (Simulink Coder)».

Dimensions

Размерности набора точек останова.

Чтобы использовать символические размерности, задайте вектор символов. Смотрите Реализуйте Варианты Размерности для Размеров Массивов в Сгенерированном Коде (Embedded Coder).

Min

Минимальное значение элементов в наборе точек по оси Х. Значение по умолчанию пустое, []. Можно задать числовое, действительное значение.

Для получения дополнительной информации о том, как Simulink использует это свойство, смотрите Задайте Минимальное и Максимальное Значения для Параметров блоков.

Max

Максимальное значение элементов в наборе точек по оси Х. Значение по умолчанию пустое, []. Можно задать числовое, действительное значение.

Для получения дополнительной информации о том, как Simulink использует это свойство, смотрите Задайте Минимальное и Максимальное Значения для Параметров блоков.

Unit

Физическая единица измерения элементов в наборе точек по оси Х. Вы можете задать текст, такой как degF. См. Спецификацию единиц измерения в моделях Simulink.

Field name

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

Tunable size name

Имя поля структуры в сгенерированном коде. В этом поле сохранена длина (количество элементов) набора точек по оси Х, который используется алгоритмом сгенерированного кода для определения размера таблицы. Чтобы настроить эффективный размер таблицы во время выполнения кода, измените значение этого поля структуры в памяти. Имя по умолчанию N1 для первого набора точек по оси Х и N2 для второго набора. Чтобы изменить имя поля, укажите текст.

Этот столбец появляется только при выборе Support tunable size.

Description

Описание набора точек по оси Х. Вы можете задать текст, такой как This breakpoint set represents the pressure input.

First point

Первая точка равномерно разнесенных данных точек по оси Х. Этот параметр доступен, когда Specification установлено на Even spacing.

Интервал

Интервал между точками в равномерно разнесенных данных точек по оси Х Этот параметр доступен, когда Specification установлено на Even spacing.

Name

Имя Simulink.Breakpoint объект, который хранит информацию для этого набора точек по оси Х.

Этот столбец появляется только в том случае, если для параметра Specification задано значение Reference.

Имя первой точки

Имя Simulink.Breakpoint объект, который хранит информацию для первой точки. Этот параметр доступен, когда Specification установлено на Even spacing.

Имя интервала

Имя Simulink.Breakpoint объект, который хранит информацию для интервала. Этот параметр доступен, когда Specification установлено на Even spacing.

Data definition: Storage class

Класс памяти структурной переменной (если задано Specification Explicit values или Even spacing) или переменная массива (Reference) в сгенерированном коде. Переменная хранит данные таблицы и, если переменная является структурой, данные набора точек по оси Х. Настройкой по умолчанию является Auto.

Для получения дополнительной информации о классах памяти смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Simulink Coder).

Если у вас есть Embedded Coder®можно выбрать пользовательский класс памяти. Для получения дополнительной информации о пользовательских классах памяти смотрите Организовать данные параметра в структуру при помощи класса Struct Storage Class (Embedded Coder).

Data definition: Identifier

Альтернативное имя для структурной переменной (если вы задаете Specification равным Explicit values или Even spacing) или переменная массива (Reference) в сгенерированном коде. Значение по умолчанию пусто, и в этом случае сгенерированный код использует имя Simulink.LookupTable объект как имя структуры или переменной массива. Чтобы задать идентификатор, задайте текст.

Чтобы включить это свойство, установите для Data definition: Storage class значение, отличное от Auto.

Data definition: Alignment

Контур выравнивания данных в сгенерированном коде. Начальный адрес памяти для данных, выделенных для структуры или переменной массива, является кратным заданному значению. Значение по умолчанию -1, что позволяет генератору кода определить оптимальное выравнивание на основе использования.

Задайте положительное целое число, которое является степенью 2, не превышающей 128. Дополнительные сведения об использовании выравнивания данных для замены кода см. в разделе Выравнивание данных для замены кода (Embedded Coder).

Struct Type definition: Name

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

Это свойство появляется только, если для Specification задано значение Explicit values или Even spacing.

Struct Type definition: Data scope

Возможности типа структуры (импортирована из пользовательского кода или экспортирована из сгенерированного кода). Значение по умолчанию Auto. Когда вы выбираете Auto:

  • Если вы не задаете значение в Struct Type definition: Header file поле, сгенерированный код экспортирует определение типа структуры в файл model_types.h. model - имя модели.

  • Если вы задаете значение в Struct Type definition: Header file поле, например myHdr.hсгенерированный код импортирует определение типа структуры из myHdr.h.

Чтобы явным образом задать возможности данных:

  • Чтобы импортировать определение типа структуры в сгенерированный код из пользовательского кода, выберите Imported.

  • Чтобы экспортировать определение типа структуры из сгенерированного кода, выберите Exported.

Если вы не задаете значение в Struct Type definition: Header file поле, сгенерированный код импортирует или экспортирует определение типа из или в StructName.h. StructName - имя, заданное с помощью Struct Type definition: Name свойств.

Это свойство появляется только, если для Specification задано значение Explicit values или Even spacing.

Struct Type definition: Header file

Имя файла заголовка, содержащего определение типа структуры. Можно импортировать определение из созданного файла заголовка или экспортировать определение в сгенерированный файл заголовка. Чтобы контролировать возможности типа структуры, измените настройку свойства Struct Type definition: Data scope.

Это свойство появляется только, если для Specification задано значение Explicit values или Even spacing.

Таблица и значение точки останова области редактирования

Информация для данных таблицы и точек по оси Х. Можно ввести выражение MATLAB в связанное текстовое поле или добавить данные непосредственно в сопроводительную таблицу. Выберите требуемый тип данных:

  • Table - Данные таблицы. Задайте числовой вектор или многомерный массив с по крайней мере двумя элементами.

    Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) пока выражение возвращает числовой вектор или многомерный массив. Когда вы нажимаете Enter, объект выполняет выражение и использует результат, чтобы задать значение этого свойства.

    Когда вы задаете данные таблицы с тремя или более размерностями, таблица отображает данные как выражение, которое содержит вызов reshape функция. Чтобы изменить значения в данных, измените первый аргумент reshape вызов, который содержит все значения в сериализованном векторе. Когда вы добавляете или удаляете элементы вдоль размерности, необходимо также исправить аргумент, который представляет длину изменённой размерности.

    Вы можете редактировать эти данные с помощью более интуитивно понятного интерфейса в блоке интерполяционной таблицы. См. «Импорт данных интерполяционной таблицы из MATLAB».

  • BPN - данные для набора точек по оси Х.

    Задайте числовой вектор с как минимум двумя элементами.

    Можно также использовать выражение с математическими операторами, такими как sin(1:0.5:30) пока выражение возвращает числовой вектор. Когда вы нажимаете Enter, объект выполняет выражение и использует результат, чтобы задать значение этого свойства.

    Вы можете редактировать эти данные с помощью более интуитивно понятного интерфейса в блоке интерполяционной таблицы. См. «Импорт данных интерполяционной таблицы из MATLAB».

Ввод или манипуляция данными в таблице проста и интуитивно понятна. Как Microsoft® Excel® электронные таблицы, можно работать с таблицей с такими операциями, как:

  • Выберите элементы таблицы

  • Используйте стандартные горячие клавиши, такие как:

    • Копировать - Ctrl+C

    • Вставка - Ctrl+V

    • Отменить - Ctrl+Z

    • Удалить

    • Редо - Shift+Ctrl+Z

Свойства

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

Информация о наборе точек по оси Х, заданная как вектор Simulink.lookuptable.Breakpoint объекты, массив ячеек из векторов символов или вектор из Simulink.lookuptable.Evenspacing объекты.

Если вы используете вектор Simulink.lookuptable.Breakpoint объекты, каждый объект представляет набор точек по оси Х. Чтобы использовать вектор Simulink.lookuptable.Breakpoint объекты, установите свойство BreakpointsSpecification на 'Explicit values'.

Если вы используете массив ячеек из векторов символов, каждый вектор символов представляет имя Simulink.Breakpoint объект. Чтобы использовать массив ячеек из векторов символов, задайте свойство BreakpointsSpecification на 'Reference'.

Если вы используете вектор Simulink.lookuptable.Evenspacing объекты, каждый объект представляет набор точек по оси Х. Чтобы использовать вектор Simulink.lookuptable.Evenspacing объекты, установите свойство BreakpointsSpecification на 'Even Spacing'.

Источник информации о наборе точек по оси Х, заданный как 'Explicit values' (по умолчанию), 'Even spacing', или 'Reference'. Смотрите параметр Breakpoints > Specification.

Типы данных: char

Настройки генерации кода для структурной переменной (если вы задаете BreakpointsSpecification на 'Explicit values' или 'Even spacing') или переменная массива ('Reference'), который хранит интерполяционную таблицу и наборы точек по оси Х, заданные как Simulink.CoderInfo объект. Можно задать класс памяти или пользовательский класс памяти с помощью этого встроенного объекта. См. Simulink.CoderInfo.

Параметры настройки для типа структуры, которую использует структурная переменная в сгенерированном коде, заданные как Simulink.lookuptable.StructTypeInfo объект.

Если вы задаете BreakpointsSpecification на 'Reference', а Simulink.LookupTable объект не отображается в сгенерированном коде как структура. Генератор кода игнорирует это свойство.

Опция для генерации кода, которая позволяет настраивать эффективный размер таблицы, заданный как true или false. Смотрите параметр Support Tunable Size.

Типы данных: logical

Информация для данных таблицы, заданная как Simulink.lookuptable.Table объект.

Копировать семантику

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

Представление одномерной интерполяционной таблицы

  1. Создайте Simulink.LookupTable объект с именем LUTObj.

    LUTObj = Simulink.LookupTable;

  2. Задайте данные таблицы.

    LUTObj.Table.Value = [1.1 2.2 3.3 4.4 5.5];

  3. Укажите данные набора точек по оси Х.

    LUTObj.Breakpoints(1).Value = [-2 -1 0 1 2];

  4. Укажите имя для типа структуры в сгенерированном коде.

    LUTObj.StructTypeInfo.Name = 'myLUTStruct';

Можно использовать LUTObj в 1-D Lookup Table диалогового окна блока. В блоке установите Data specification равным Lookup table object и Name к LUTObj.

Чтобы просмотреть данные, используйте диалоговое окно свойства, как описано в View Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface.

Представление двумерной интерполяционной таблицы

  1. Создайте Simulink.LookupTable объект с именем LUTObj.

    LUTObj = Simulink.LookupTable;

  2. Задайте данные таблицы.

    LUTObj.Table.Value = [1.1 2.2 3.3 4.4 5.5; ...
                              6.6 7.7 8.8 9.9 10.1];

  3. Укажите данные набора точек по оси Х. В Breakpoints свойство, используйте индекс вектора 2 для установки значений во втором наборе точек по оси Х.

    LUTObj.Breakpoints(1).Value = [-1 1];
    
    LUTObj.Breakpoints(2).Value = [-2 -1 0 1 2];
    

    LUTObj создает Simulink.lookuptable.Breakpoint объект как второй векторный элемент в значении Breakpoints свойство. Кроме Value свойство, новый объект имеет значения свойств по умолчанию.

  4. Укажите имя для типа структуры в сгенерированном коде.

    LUTObj.StructTypeInfo.Name = 'myLUTStruct';

Можно использовать LUTObj в 2-D Lookup Table диалогового окна блока.

Чтобы просмотреть данные, используйте диалоговое окно свойства, как описано в View Simulink.LookupTable Object Data Using the Property Dialog Box Tabular Interface.

Равномерное Пространство Каждого Второго Значения, Начиная С 1

Чтобы равномерно разместить каждое второе значение, начиная с 1, используйте объект Breakpoint.

  1. Создайте Simulink.LookupTable объект с именем LUTObj.

    LUTObj=Simulink.LookupTable
    
    LUTObj = 
    
      LookupTable with properties:
    
                           Table: [1×1 Simulink.lookuptable.Table]
        BreakpointsSpecification: 'Explicit values'
                     Breakpoints: [1×1 Simulink.lookuptable.Breakpoint]
              SupportTunableSize: 0
                       CoderInfo: [1×1 Simulink.CoderInfo]
                  StructTypeInfo: [1×1 Simulink.lookuptable.StructTypeInfo]
  2. Установите четные интервалы между свойствами точек по оси Х.

    LUTObj.BreakpointsSpecification='Even spacing'
    
    LUTObj = 
    
      LookupTable with properties:
    
                           Table: [1×1 Simulink.lookuptable.Table]
        BreakpointsSpecification: 'Even spacing'
                     Breakpoints: [1×1 Simulink.lookuptable.Evenspacing]
              SupportTunableSize: 0
                       CoderInfo: [1×1 Simulink.CoderInfo]
                  StructTypeInfo: [1×1 Simulink.lookuptable.StructTypeInfo]
  3. Получите свойства точки останова.

    LUTObj.Breakpoints(1)
    
    
    ans = 
    
      Evenspacing with properties:
    
             FirstPoint: 0
                Spacing: 1
               DataType: 'auto'
                    Min: []
                    Max: []
                   Unit: ''
         FirstPointName: 'BPFirstPoint1'
            SpacingName: 'BPSpacing1'
        TunableSizeName: 'N1'
            Description: ''
  4. Чтобы задать первое свойство точки, используйте объект Breakpoint FirstPoint свойство.

    LUTObj.Breakpoints(1).FirstPoint=1
  5. Чтобы задать свойство интервала, используйте объект Breakpoint.

    LUTObj.Breakpoints(1).Spacing=2
  6. Получите свойства точки останова.

    LUTObj.Breakpoints(1)
    
    ans = 
    
      Evenspacing with properties:
    
             FirstPoint: 1
                Spacing: 2
               DataType: 'auto'
                    Min: []
                    Max: []
                   Unit: ''
         FirstPointName: 'BPFirstPoint1'
            SpacingName: 'BPSpacing1'
        TunableSizeName: 'N1'
            Description: ''

Управляйте генерацией кода для интерполяционной таблицы и наборов точек по оси Х

Создайте Simulink.LookupTable объект с именем LUTObj.

LUTObj = Simulink.LookupTable;

Задайте данные таблицы.

LUTObj.Table.Value = [1.00 2.25 3.50 4.75 6.00; ...
                          7.25 8.50 9.75 11.00 12.25];

Укажите данные набора точек по оси Х. В Breakpoints свойство, используйте индекс массива 2 для создания дополнительной Simulink.lookuptable.BreakpointInfo объект, который представляет второй набор точек по оси Х.

LUTObj.Breakpoints(1).Value = [-1 1];

LUTObj.Breakpoints(2).Value = [-2 -1 0 1 2];

Задайте типы данных для интерполяционной таблицы и каждого набора точек по оси Х.

LUTObj.Table.DataType = 'fixdt(1,16,2)';

LUTObj.Breakpoints(1).DataType = 'int16';

LUTObj.Breakpoints(2).DataType = 'int16';

Задайте уникальные имена для полей структуры, которые хранят данные таблицы и наборы точек по оси Х в сгенерированном коде.

LUTObj.Table.FieldName = 'myTable';

LUTObj.Breakpoints(1).FieldName = 'myBPSet1';

LUTObj.Breakpoints(2).FieldName = 'myBPSet2';

Экспортируйте определение структурной переменной из сгенерированного кода с помощью класса памяти ExportedGlobal.

LUTObj.CoderInfo.StorageClass = 'ExportedGlobal';

Назовите тип структуры в сгенерированном коде LUTStructType. Экспортируйте определение типа структуры в сгенерированный заголовок файла с именем myLUTHdr.h.

LUTObj.StructTypeInfo.Name = 'LUTStructType';
LUTObj.StructTypeInfo.DataScope = 'Exported';
LUTObj.StructTypeInfo.HeaderFileName = 'myLUTHdr.h';

В блоке n-D Интерполяционная таблица в модели установите спецификацию Data на Lookup table object и имя для LUTObj.

load_system('myModel_LUTObj')
set_param('myModel_LUTObj/Lookup Table','DataSpecification','Lookup table object',...
    'LookupTableObject','LUTObj')

Сгенерируйте код из модели.

slbuild('myModel_LUTObj')
### Starting build procedure for: myModel_LUTObj
### Generated code for 'myModel_LUTObj' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of code generation for: myModel_LUTObj

Build Summary

0 of 1 models built (1 models already up to date)
Build duration: 0h 0m 2.141s

Сгенерированный код определяет тип структуры LUTStructType в сгенерированном заголовочном файле myLUTHdr.h.

file = fullfile('myModel_LUTObj_ert_rtw','myLUTHdr.h');
rtwdemodbtype(file,'typedef struct {','} LUTStructType;',1,1)
typedef struct {
  int16_T myBPSet1[2];
  int16_T myBPSet2[5];
  int16_T myTable[10];
} LUTStructType;

Код использует глобальную структурную переменную LUTObj для хранения данных таблицы и набора точек по оси Х. Данные таблицы масштабируются на основе заданного типа данных с фиксированной точкой.

file = fullfile('myModel_LUTObj_ert_rtw','myModel_LUTObj.c');
rtwdemodbtype(file,'LUTStructType LUTObj = {','/* Variable: LUTObj',1,1)
LUTStructType LUTObj = {
  { -1, 1 },

  { -2, -1, 0, 1, 2 },

  { 4, 29, 9, 34, 14, 39, 19, 44, 24, 49 }
} ;                                    /* Variable: LUTObj

Сгенерируйте код, который использует условно скомпилированные длины размерности

Предположим, ваш рукописный код условно выделяет память и инициализирует интерполяционную таблицу на основе длин размерностей, которые вы задаете как #define макросы. В этом примере показано, как сгенерировать код, который использует вашу внешнюю таблицу и данные точек по оси Х.

Символические размерности требуют, чтобы вы использовали системный целевой файл на основе ERT, который требует Embedded Coder ®.

Исследуйте внешний код

В текущей папке скопируйте эти определения макросов в заголовочный файл с именем ex_myHdr_LUT.h.

#include "rtwtypes.h"

#ifndef _HEADER_MYHDR_H_
#define _HEADER_MYHDR_H_

#define bp1Len 2
#define bp2Len 2

typedef struct {
  real_T BP1[bp1Len];
  real_T BP2[bp2Len];
  real_T Table[bp1Len * bp2Len];
} LUTObj_Type;

extern LUTObj_Type LUTObj;

#endif

Скопируйте этот статический код инициализации в исходный файл с именем ex_mySrc_LUT.c.

#include "ex_myHdr_LUT.h"

#if bp1Len == 2 && bp1Len == 2
LUTObj_Type LUTObj = {
  { 1.0, 2.0 },

  { 3.0, 4.0 },

  { 3.0, 2.0, 4.0, 1.0 }
} ;         
#endif

#if bp1Len == 3 && bp1Len == 3
LUTObj_Type LUTObj = {
  { 1.0, 2.0, 3.0 },

  { 4.0, 5.0, 6.0 },

  { 1.0, 6.0, 2.0, 3.0, 8.0, 9.0, 5.0, 4.0, 7.0 }
} ;     
#endif

Чтобы сгенерировать код, который импортирует эти данные, создайте bp1Len и bp2Len как Simulink.Parameter объекты в MATLAB. Создание LUTObj как Simulink.LookupTable объект. Используйте объекты параметров, чтобы задать длины размерностей для данных таблицы и набора точек по оси Х в Simulink.LookupTable объект.

Создайте модель примера

Создайте пример модели ex_LUTObj при помощи блока n-D Интерполяционная таблица. В диалоговом окне Блок Интерполяционная таблица на вкладке Таблица и Точки по оси Х установите значение Число размеров таблицы 2.

open_system('ex_LUTObj')

Создание Simulink.LookupTable Объект

На панели иерархии модели Model Explorer выберите Базовое Рабочее Пространство.

На панели инструментов нажмите кнопку Add Simulink LookupTable. A Simulink.LookupTable объект с именем Object появляется в базовом рабочем пространстве.

На панели «Содержимое» (средняя панель) переименуйте объект в LUTObj.

Кроме того, создайте объект в командной строке:

LUTObj = Simulink.LookupTable;

Сконфигурируйте Simulink.LookupTable Объект

На панели «Содержимое» выберите новый объект LUTObj. Диалоговое окно свойств появляется на панели Диалоговое окно (правая панель).

Установите Количество размерностей таблицы равным 2.

В разделе « Таблице» установите значение [3 4; 2 1].

В первой строке в разделе «Точки по оси Х» установите значение [1 2].

Во второй строке в разделе «Точки по оси Х» установите значение [3 4]. Нажмите Применить.

В разделе «Определение типа структуры» установите значение «Область данных» Imported. Установите заголовочный файл на ex_myHdr_LUT.h. Установите имя в LUTObj_Type.

В диалоговом окне блока Интерполяционная таблица установите для спецификации данных значение Lookup table object. Установите имя в LUTObj. Нажмите Применить.

Кроме того, чтобы сконфигурировать объект и блоки, используйте следующие команды:

LUTObj.Breakpoints(1).Value = [1 2];
LUTObj.Breakpoints(2).Value = [3 4];
LUTObj.Table.Value = [3 4; 2 1];
LUTObj.StructTypeInfo.DataScope = 'Imported';
LUTObj.StructTypeInfo.HeaderFileName = 'ex_myHdr_LUT.h';
LUTObj.StructTypeInfo.Name = 'LUTObj_Type';
set_param('ex_LUTObj/Lookup Table','LookupTableObject','LUTObj')
set_param('ex_LUTObj/Lookup Table',...
    'DataSpecification','Lookup table object')

Включите использование генератора кода Simulink.Parameter объекты как макросы, задающие длины размерностей. Выберите параметр конфигурации Allow symbolic dimension specification.

set_param('ex_LUTObj','AllowSymbolicDim','on')

Создайте Simulink.Parameter объекты, которые представляют макросы bp1Len и bp2Len. Чтобы сгенерировать код, который импортирует макросы из вашего заголовочного файла ex_myHdr_LUT.h, применить класс памяти ImportedDefine.

bp1Len = Simulink.Parameter(2);
bp1Len.Min = 2;
bp1Len.Max = 3;
bp1Len.DataType = 'int32';
bp1Len.CoderInfo.StorageClass = 'Custom';
bp1Len.CoderInfo.CustomStorageClass = 'ImportedDefine';
bp1Len.CoderInfo.CustomAttributes.HeaderFile = 'ex_myHdr_LUT.h';

bp2Len = Simulink.Parameter(2);
bp2Len.Min = 2;
bp2Len.Max = 3;
bp2Len.DataType = 'int32';
bp2Len.CoderInfo.StorageClass = 'Custom';
bp2Len.CoderInfo.CustomStorageClass = 'ImportedDefine';
bp2Len.CoderInfo.CustomAttributes.HeaderFile = 'ex_myHdr_LUT.h';

Сконфигурируйте существующие Simulink.LookupTable LUTObj объекта использовать Simulink.Parameter объекты. Установите длины размерностей данных набора точек по оси Х и данных таблицы с помощью имен объектов параметра.

LUTObj.Breakpoints(1).Dimensions = '[1 bp1Len]';
LUTObj.Breakpoints(2).Dimensions = '[1 bp2Len]';
LUTObj.Table.Dimensions = '[bp1Len bp2Len]';

Сконфигурируйте LUTObj как импортированные данные путем применения класса памяти ImportFromFile. Чтобы импортировать свое определение LUTObj, добавить имя файла ex_mySrc_LUT.c к параметру модели Параметры конфигурации > Генерация кода > Пользовательский код > Дополнительная информация о сборке > Исходные файлы.

LUTObj.CoderInfo.StorageClass = 'Custom';
LUTObj.CoderInfo.CustomStorageClass = 'ImportFromFile';
LUTObj.CoderInfo.CustomAttributes.HeaderFile = 'ex_myHdr_LUT.h';

set_param('ex_LUTObj','CustomSource','ex_mySrc_LUT.c')

Сгенерируйте и смотрите код

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

set_param('ex_LUTObj','GenCodeOnly','off')

Сгенерируйте код из модели.

slbuild('ex_LUTObj')
### Starting build procedure for: ex_LUTObj
### Successful completion of build procedure for: ex_LUTObj

Build Summary

Top model targets built:

Model      Action                       Rebuild Reason                                    
==========================================================================================
ex_LUTObj  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 18.541s

В отчете о генерации кода просмотрите сгенерированный файл ex_LUTObj.h. Файл импортирует определения макросов и типа структуры путем включения вашего файла заголовка ex_myHdr_LUT.h.

file = fullfile('ex_LUTObj_ert_rtw','ex_LUTObj.h');
rtwdemodbtype(file,'#include "ex_myHdr_LUT.h"','#include "ex_myHdr_LUT.h"',1,1)
#include "ex_myHdr_LUT.h"

В исходном файле ex_LUTObj.cалгоритм кода в модели step функция передает данные точек по оси Х и данные таблицы в функцию, которая выполняет поиск по таблице. Алгоритм также проходит bp1Len таким образом, функция поиска может проходить по строкам и столбцам данных таблицы, которые появляются в сгенерированном коде как сериализованный 1-D массив.

file = fullfile('ex_LUTObj_ert_rtw','ex_LUTObj.c');
rtwdemodbtype(file,'/* Model step function */','/* Model initialize function */',1,0)
/* Model step function */
void ex_LUTObj_step(void)
{
  /* Outport: '<Root>/Out1' incorporates:
   *  Inport: '<Root>/In1'
   *  Inport: '<Root>/In2'
   *  Lookup_n-D: '<Root>/Lookup Table'
   */
  ex_LUTObj_Y.Out1 = look2_binlcapw(ex_LUTObj_U.In1, ex_LUTObj_U.In2,
    (&(LUTObj.BP1[0])), (&(LUTObj.BP2[0])), (&(LUTObj.Table[0])),
    ex_LUTObj_ConstP.LookupTable_maxIndex, (uint32_T)bp1Len);
}

Ограничения

  • Вы не можете использовать Simulink.Breakpoint объекты или Simulink.LookupTable объекты, которые ссылаются на Simulink.Breakpoint объекты как специфичные для экземпляра данные параметра для переиспользуемых компонентов. Для примера нельзя использовать один из следующих объектов как:

    • Аргумент модели в рабочем пространстве модели или значение аргумента модели в блоке Model.

    • Значение параметра маски на блоке CodeReuse Subsystem.

    • Значение параметра маски в подсистеме, которую вы повторно используете, создав пользовательскую библиотеку.

    Однако можно использовать автономные Simulink.LookupTable объекты, которые не относятся к Simulink.Breakpoint объекты, этими способами.

  • Когда блоки в подсистеме используют Simulink.LookupTable или Simulink.Breakpoint объекты, вы не можете задать переопределение типа данных только в подсистеме. Вместо этого установите переопределение типа данных на всей модели.

Введенный в R2016b