Импортируйте данные об интерполяционной таблице из MATLAB

Вы можете таблица импорта и устанавливать точки останова данные из переменных в рабочем пространстве MATLAB путем ссылки на них во вкладке Table and Breakpoints диалогового окна. Следующие примеры показывают, как импортировать и экспортировать стандартный формат и нестандартные данные о формате из рабочего пространства MATLAB.

Импортируйте данные об интерполяционной таблице стандартного формата

Предположим, что вы задаете 3-D интерполяционную таблицу в своем n-D блоке Lookup Table.

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

table3d_map = zeros(2,4,3);
table3d_map(:,:,1) = [     1     2     3     4;      5     6     7     8];
table3d_map(:,:,2) = [    11    12    13    14;     15    16    17    18];
table3d_map(:,:,3) = [   111   112   113   114;   115   116   117   118];
bp3d_z =[  0    10    20];
bp3d_x =[     0    10    20    30];
bp3d_y =[   400  6400];
Откройте n-D диалоговое окно блока Lookup Table и введите следующие параметры во вкладку Table и Breakpoints:

  • Табличные данные: table3d_map

  • Точки останова 1: bp3d_y

  • Точки останова 2: bp3d_x

  • Точки останова 3: bp3d_z

Нажмите Edit table and breakpoints, чтобы открыть Редактор Интерполяционной таблицы и показать данные из переменных рабочей области.

Распространите данные об интерполяционной таблице стандартного формата

Когда вы вносите изменения в свои данные об интерполяционной таблице, рассматриваете распространение изменений назад в переменных рабочего пространства MATLAB, данные были импортированы от использования File> Update Block Data.

Можно также использовать Редактор Интерполяционной таблицы, чтобы отредактировать табличные данные и установить точки останова набор данных Simulink.LookupTable и набор данных точки останова объектов Simulink.Breakpoint и распространить изменения назад в объекте.

Предположим, что вы делаете изменение в переменные интерполяционной таблицы импортированным из переменных рабочего пространства MATLAB в, Импортируют Данные об Интерполяционной таблице Стандартного формата. Например, измените значение данных в (1,1,1) от 1 до 33. Чтобы распространить это возвращается к table3d_map в рабочей области, выбирает File> Update Block Data. Нажмите Yes, чтобы подтвердить, что вы хотите перезаписать table3d_map.

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

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

table3d_map_custom = zeros(6,4);
table3d_map_custom = [     1     2     3     4;      5     6     7     8;
11      12     13      14;        15      16      17     18;
111   112    113    114;     115    116    117    118];
bp3d_z =[  0    10    20];
bp3d_x =[  0    10    20    30];
bp3d_y =[  400  6400];
Откройте n-D диалоговое окно блока Lookup Table и введите следующие параметры во вкладку Table и Breakpoints. Преобразуйте table3d_map_custom в 3D матрицу для табличного ввода данных с помощью команды reshape.

  • Табличные данные: reshape(table3d_map_custom,[2,4,3])

  • Точки останова 1: bp3d_y

  • Точки останова 2: bp3d_x

  • Точки останова 3: bp3d_z

Нажмите Edit table and breakpoints, чтобы открыть Редактор Интерполяционной таблицы и показать данные из переменных рабочей области.

Изменитесь 1 - 33 в Редакторе Интерполяционной таблицы. Редактор Интерполяционной таблицы записывает ваши изменения путем поддержания копии таблицы. Чтобы восстановить значения переменных из рабочей области MATLAB®, выберите File> Reload Block Data. Чтобы обновить переменные рабочего пространства MATLAB с отредактированными данными, выберите File> Update Block Data в Редакторе Интерполяционной таблицы. Вы не можете распространить изменение в table3d_map_custom, переменная рабочей области, которая содержит нестандартные табличные данные для n-D блока Lookup Table. Чтобы распространить изменение, необходимо указать специальную функцию, которая находится на пути поиска файлов MATLAB. Для получения дополнительной информации смотрите, Распространяют Нестандартные Данные об Интерполяционной таблице Формата.

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

Этот пример показывает, как распространить изменения из Редактора Интерполяционной таблицы к переменным рабочей области нестандартного формата. Предположим, что ваша модель Simulink® от Импортирует Нестандартные Данные об Интерполяционной таблице Формата, имеет 3D интерполяционную таблицу, которая получает ее табличные данные из двумерной переменной table3d_map_custom рабочей области. Обновите интерполяционную таблицу в Редакторе Интерполяционной таблицы и распространите, они возвращаются к table3d_map_custom с помощью специальной функции.

  1. Создайте файл с именем sl_customization.m с этим содержимым.

    function sl_customization(cm)
    cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle{end+1} = ...
    @myGetTableConvertInfoFcn;
    end

    В этой функции:

    • Аргумент cm является указателем на менеджера по индивидуальной настройке объект.

    • Указатель @myGetTableConvertInfoFcn добавляется к списку указателей на функцию в массиве ячеек для cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle. Можно использовать любое алфавитно-цифровое имя для функции, указатель которой вы добавляете в массив ячеек.

  2. В том же файле задайте функцию myGetTableConvertInfoFcn.

    function blkInfo = myGetTableConvertInfoFcn(blk,tableStr)
            blkInfo.allowTableConvertLocal = true;
            blkInfo.tableWorkSpaceVarName = 'table3d_map_custom';
            blkInfo.tableConvertFcnHandle = @myConvertTableFcn;
    end

    Функция myGetTableConvertInfoFcn возвращает объект blkInfo, содержащий три поля.

    • Преобразование данных о таблице allowTableConvertLocal — Allows для блока.

    • tableWorkSpaceVarName — Задает имя переменной рабочей области, которая имеет нестандартный формат таблицы.

    • tableConvertFcnHandle — Задает указатель для функции преобразования.

    Когда allowTableConvertLocal установлен в true, табличные данные для того блока преобразованы в нестандартный формат переменной рабочей области, имя которой совпадает с tableWorkSpaceVarName. Функция преобразования соответствует указателю, который задает tableConvertFcnHandle. Можно использовать любое алфавитно-цифровое имя для функции преобразования.

  3. В том же файле задайте функцию myConvertTableFcn. Эта функция преобразовывает 3D интерполяционную таблицу строк размера * Столбцы * Высота к двумерной переменной размера (Rows*Height) * Столбцы.

    % Converts 3-dimensional lookup table from Simulink format to
    % nonstandard format used in workspace variable
    function cMap = myConvertTableFcn(data)
        
    % Determine the row and column number of the 3D table data
        mapDim = size(data);
        numCol = mapDim(2);
        numRow = mapDim(1)*mapDim(3);
        cMap = zeros(numRow, numCol);
       % Transform data back to a 2-dimensional matrix
        cMap = reshape(data,[numRow,numCol]);
    end
  4. Поместите sl_customization.m на путь поиска файлов MATLAB. У вас может быть несколько файлов с именем sl_customization.m на пути поиска файлов. Для получения дополнительной информации смотрите Поведение с Несколькими Специальными функциями.

  5. Обновите индивидуальные настройки Simulink в подсказке команды MATLAB.

    sl_refresh_customizations
  6. Откройтесь Редактор Интерполяционной таблицы для вашей интерполяционной таблицы блокируют и выбирают File> Update Block Data. Нажмите Yes, чтобы перезаписать переменную table3d_map_custom рабочей области.

  7. Проверяйте значение table3d_map_custom в базовом рабочем пространстве.

    table3d_map_custom =
    
        33     2     3     4
         5     6     7     8
        11    12    13    14
        15    16    17    18
       111   112   113   114
       115   116   117   118

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

Примечание

Если вы не перезаписываете переменную table3d_map_custom рабочей области, вам предлагают заменить ее на числовые данные. Нажмите Yes, чтобы заменить выражение в поле Table data с числовыми данными. Нажмите No, если вы не хотите, чтобы ваш Редактор Интерполяционной таблицы изменения для табличных данных появился в диалоговом окне блока.

Поведение с несколькими специальными функциями

В начале сеанса работы с MATLAB Simulink загружает каждый файл настройки sl_customization.m на пути и выполняет функцию sl_customization. Выполнение каждой функции устанавливает индивидуальные настройки для того сеанса.

Когда вы выбираете File> Update Block Data в Редакторе Интерполяционной таблицы, редактор проверяет список указателей на функцию в массиве ячеек для cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle. Если массив ячеек содержит один или несколько указателей на функцию, свойство allowTableConvertLocal определяет, могут ли изменения в Редакторе Интерполяционной таблицы быть распространены.

  • Если значение установлено к true, то табличные данные преобразованы в нестандартный формат в переменной рабочей области.

  • Если значение установлено к false, то табличные данные не преобразованы в нестандартный формат в переменной рабочей области.

  • Если значение установлено к true, и другая специальная функция задает его, чтобы быть false, Редактор Интерполяционной таблицы сообщает об ошибке.

Похожие темы