exponenta event banner

Импорт данных таблицы подстановки из MATLAB

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

Импорт данных таблицы подстановки стандартного формата

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

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

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» и введите следующие параметры на вкладке «Таблица и точки останова»:

  • Данные таблицы: table3d_map

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

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

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

Щелкните Править таблицу и точки останова (Edit table and breakpoints), чтобы открыть редактор таблиц подстановки и показать данные из переменных рабочей области.

Распространение данных таблицы подстановки стандартного формата

При внесении изменений в данные таблицы подстановки рассмотрите возможность распространения изменений на переменные рабочей области MATLAB, импортированные с помощью команды «Файл» > «Обновить данные блока».

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

Предположим, что внесены изменения в переменные таблицы подстановки, импортированные из переменных рабочей области MATLAB в окне Импорт данных таблицы подстановки стандартного формата. Например, измените значение данных в (1,1,1) с 1 кому 33. Чтобы распространить это изменение обратно в table3d_map в рабочей области выберите «Файл» > «Обновить данные блока». Нажмите кнопку Да, чтобы подтвердить, что вы хотите перезаписать table3d_map.

Импорт данных таблицы подстановки нестандартного формата

Предположим, что в блоке n-D Lookup Table указана таблица поиска 3-D. Создайте переменные рабочей области для использования в качестве данных точки останова и таблицы для таблицы подстановки. Переменная для табличных данных, 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» и введите следующие параметры на вкладке «Таблица и точки останова». Преобразовать table3d_map_custom в трехмерную матрицу для ввода табличных данных с помощью reshape команда.

  • Данные таблицы: reshape(table3d_map_custom,[2,4,3])

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

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

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

Щелкните Править таблицу и точки останова (Edit table and breakpoints), чтобы открыть редактор таблиц подстановки и показать данные из переменных рабочей области.

Измените значение 1 на 33 в редакторе таблиц подстановки. Редактор таблиц подстановки записывает изменения, сохраняя копию таблицы. Чтобы восстановить значения переменных из рабочей области MATLAB ®, выберите «Файл» > «Перезагрузить данные блока». Чтобы обновить переменные рабочего пространства MATLAB отредактированными данными, выберите «Файл» > «Обновить данные блока» в редакторе таблиц подстановки. Нельзя распространить изменение на table3d_map_custom, переменная рабочей области, содержащая нестандартные данные таблицы для n-D блока таблицы подстановки. Для распространения изменения необходимо зарегистрировать функцию настройки, которая находится в пути поиска 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 - Позволяет преобразовывать данные таблицы для блока.

    • tableWorkSpaceVarName - указывает имя переменной рабочей области, имеющей нестандартный формат таблицы.

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

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

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

    % 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. Откройте редактор таблиц подстановки для блока таблицы подстановки и выберите «Файл» > «Обновить данные блока». Нажмите кнопку Да, чтобы перезаписать переменную рабочей области 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, предлагается заменить его числовыми данными. Нажмите кнопку Да, чтобы заменить выражение в поле Данные таблицы числовыми данными. Нажмите кнопку «Нет», если не требуется, чтобы изменения в редакторе таблиц подстановки отображались в диалоговом окне блоков.

Поведение с несколькими функциями настройки

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

При выборе «Файл» > «Обновить данные блока» в редакторе таблиц подстановки редактор проверяет список дескрипторов функций в массиве ячеек для cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle. Если массив ячеек содержит один или несколько дескрипторов функций, allowTableConvertLocal определяет возможность распространения изменений в редакторе таблиц подстановки.

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

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

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

Связанные темы