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

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

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

Предположим, что вы задаете 3-D интерполяционную таблицу в своем блоке n-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 диалогового окна блока и введите следующие параметры на вкладке Таблицы и 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 в Import Standard Format Lookup Table Data. Для примера измените значение данных в (1,1,1) на 1 на 33. Чтобы распространить это изменение назад на table3d_map в рабочей области выберите File > Update Block Data. Нажмите кнопку Yes, чтобы подтвердить, что вы хотите перезаписать table3d_map.

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

Предположим, что вы задаете 3-D интерполяционную таблицу в своем блоке n-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 диалогового окна блока и введите следующие параметры на вкладке Таблицы и Breakpoints. Преобразование 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® выберите File > Reload Block Data. Чтобы обновить переменные рабочего пространства MATLAB с помощью отредактированных данных, выберите File > Update Block Data в редакторе интерполяционных таблиц. Вы не можете распространить изменение на table3d_map_custom, переменная рабочей области, которая содержит нестандартные данные таблицы для блока n-D Интерполяционная таблица. Чтобы распространить изменение, вы должны зарегистрировать функцию индивидуальной настройки, которая находится в пути поиска файлов MATLAB. Для получения дополнительной информации смотрите Распространение нестандартных данных интерполяционной таблицы формата.

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

В этом примере показано, как распространить изменения из редактора интерполяционных таблиц на переменные рабочей области нестандартного формата. Предположим, ваш Simulink® Model from Import Nonstandard Format Lookup Table Data имеет трехмерную интерполяционную таблицу, которая получает данные таблицы из двумерной переменной рабочей области 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

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

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

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

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

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

  3. В том же файле задайте myConvertTableFcn функция. Эта функция преобразует трехмерную интерполяционную таблицу размера Rows * столбцы * Height в двумерную переменную размера (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Редактор интерполяционных таблиц сообщает об ошибке.

Похожие темы