Можно импортировать данные таблицы и точек по оси Х из переменных в рабочем пространстве 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];
Данные таблицы: 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];
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
использование функции индивидуальной настройки.
Создайте файл с именем sl_customization.m
с этим содержимым.
function sl_customization(cm) cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle{end+1} = ... @myGetTableConvertInfoFcn; end
В этой функции:
Аргумент cm
- указатель на объект диспетчера индивидуальных настроек.
Указатель @myGetTableConvertInfoFcn
добавляется в список указателей на функцию в массиве ячеек для cm.LookupTableEditorCustomizer.getTableConvertToCustomInfoFcnHandle
. Можно использовать любое буквенно-цифровое имя для функции, указатель которой вы добавляете к массиву ячеек.
В том же файле задайте 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
задает. Для функции преобразования можно использовать любое буквенно-цифровое имя.
В том же файле задайте 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
Поместите sl_customization.m
на путь поиска файлов MATLAB. Вы можете иметь несколько файлов с именем sl_customization.m
по путь поиска файлов. Для получения дополнительной информации см. «Поведение с несколькими функциями индивидуальной настройки».
Обновите индивидуальные настройки Simulink в командной строке MATLAB.
sl_refresh_customizations
Откройте Редактор интерполяционных таблиц для блока интерполяционных таблиц и выберите File > Update Block Data. Щелкните Yes, чтобы перезаписать переменную рабочей области table3d_map_custom
.
Проверяйте значение 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
Редактор интерполяционных таблиц сообщает об ошибке.