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

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

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

Предположим, что вы задаете 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

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

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

Когда вы вносите изменения в свои данные интерполяционной таблицы, рассматриваете распространение изменений назад в переменных MATLAB workspace, данные были импортированы от использования Файла> Блочные Данные Обновления.

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

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

  • Табличные данные: изменитесь (table3d_map_custom, [2,4,3])

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

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

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

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

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

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

Этот пример показывает, как распространить изменения из Редактора Интерполяционной таблицы к переменным рабочей области нестандартного формата. Предположим, что ваша модель Simulink® от Импортирует Нестандартные Данные Интерполяционной таблицы Формата, имеет трехмерную интерполяционную таблицу, которая получает ее табличные данные от двумерной переменной рабочей области 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. Эта функция преобразовывает трехмерную интерполяционную таблицу строк размера * Столбцы * Высота к двумерной переменной размера (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. Нажмите кнопку Да, чтобы перезаписать переменную рабочей области 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, вам предлагают заменить его на числовые данные. Нажмите кнопку Да, чтобы заменить выражение в Табличном поле данных с числовыми данными. Нажмите No, если вы не хотите, чтобы ваш Редактор Интерполяционной таблицы изменения для табличных данных появился в блочном диалоговом окне.

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

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

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

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

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

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

Похожие темы

Была ли эта тема полезной?