Вы можете таблица импорта и устанавливать точки останова данные из переменных в рабочем пространстве 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];
Табличные данные: 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];
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
использование специальной функции.
Создайте файл с именем 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
myGetTableConvertInfoFcn
функция возвращает blkInfo
объект, содержащий три поля.
allowTableConvertLocal
— Позволяет табличное преобразование данных для блока.
tableWorkSpaceVarName
— Задает имя переменной рабочей области, которая имеет нестандартный формат таблицы.
tableConvertFcnHandle
— Задает указатель для функции преобразования.
Когда allowTableConvertLocal
установлен в true
, табличные данные для того блока преобразованы в нестандартный формат переменной рабочей области, имя которой совпадает с tableWorkSpaceVarName
. Функция преобразования соответствует указателю что tableConvertFcnHandle
задает. Можно использовать любое алфавитно-цифровое имя в функции преобразования.
В том же файле задайте 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
Поместите 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
, Редактор Интерполяционной таблицы сообщает об ошибке.