使用 Matlab 创建块 table 时遇到困难
struggle when creating a block table with Matlab
我正在尝试创建一个函数,该函数可以使用 struct 创建一个块 table,其中包含它们的 Handle、FullName、BlockType、Parent。但是,每次我输入型号名称时,它都会显示
Error using struct
Field names must be non-empty character vectors or a string scalars.
Error in createBlockTable (line 10)
tableStruct = struct(get(i), 'Name');
这是我的代码
function blockTable = createBlockTable(modelName)
load_system(modelName);
getBlock = find_system(modelName, 'FindAll', 'on', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Type', 'Block');
blockCell = cell(1,length(getBlock));
for n = 1:length(getBlock)
for i = getBlock(n, 1)
tableStruct = struct(get(i), 'Name');
end
end
blockTable = assign(tableStruct, blockCell);
end
我真的很困惑 i = getBLock(n,1)。我想我只是搞砸了那行的东西。但是我不知道如何解决这个问题。请帮忙,谢谢
更新#1
一天后,我设法以某种方式解决了它,但我不知道如何将 for 循环中的所有结构放入一个空单元格
function blockTable = createBlockTable(modelName)
load_system(modelName);
getBlock = find_system(modelName, 'FindAll', 'on', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Type', 'Block');
blockCell = cell(1, length(getBlock));
for n = 1:length(getBlock)
structTable = struct('Handle', get(getBlock(n), 'Handle'), 'Name', get(getBlock(n), 'Name') );
end
end
经过一天的时间,我解决了这个问题:
copyModel = 'sldemo_fuelsys_copy';
blockTable = makeTable(copyModel);
save('blockTable.mat','blockTable');
function blockTable = makeTable(modelName)
load_system(modelName);
getBlock = find_system(modelName, 'FindAll', 'on', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Type', 'Block');
blockCell = cell(1, length(getBlock));
for n = 1:length(getBlock)
structTable = struct('Handle', get(getBlock(n), 'Handle'), 'Name', ...
get(getBlock(n), 'Name'), ...
'Block_Type', get(getBlock(n), 'BlockType'), ...
'Parent', get(getBlock(n), 'Parent') );
blockCell{1, n} = structTable;
end
blockTable = blockCell;
end
对于我的问题,主要是我坚持如何为模型中的所有块创建打击,所以我修复并使用 for 循环来完成它,我还将我的结构分配给在此早期创建的单元格代码。
我正在尝试创建一个函数,该函数可以使用 struct 创建一个块 table,其中包含它们的 Handle、FullName、BlockType、Parent。但是,每次我输入型号名称时,它都会显示
Error using struct
Field names must be non-empty character vectors or a string scalars.
Error in createBlockTable (line 10)
tableStruct = struct(get(i), 'Name');
这是我的代码
function blockTable = createBlockTable(modelName)
load_system(modelName);
getBlock = find_system(modelName, 'FindAll', 'on', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Type', 'Block');
blockCell = cell(1,length(getBlock));
for n = 1:length(getBlock)
for i = getBlock(n, 1)
tableStruct = struct(get(i), 'Name');
end
end
blockTable = assign(tableStruct, blockCell);
end
我真的很困惑 i = getBLock(n,1)。我想我只是搞砸了那行的东西。但是我不知道如何解决这个问题。请帮忙,谢谢
更新#1
一天后,我设法以某种方式解决了它,但我不知道如何将 for 循环中的所有结构放入一个空单元格
function blockTable = createBlockTable(modelName)
load_system(modelName);
getBlock = find_system(modelName, 'FindAll', 'on', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Type', 'Block');
blockCell = cell(1, length(getBlock));
for n = 1:length(getBlock)
structTable = struct('Handle', get(getBlock(n), 'Handle'), 'Name', get(getBlock(n), 'Name') );
end
end
经过一天的时间,我解决了这个问题:
copyModel = 'sldemo_fuelsys_copy';
blockTable = makeTable(copyModel);
save('blockTable.mat','blockTable');
function blockTable = makeTable(modelName)
load_system(modelName);
getBlock = find_system(modelName, 'FindAll', 'on', 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Type', 'Block');
blockCell = cell(1, length(getBlock));
for n = 1:length(getBlock)
structTable = struct('Handle', get(getBlock(n), 'Handle'), 'Name', ...
get(getBlock(n), 'Name'), ...
'Block_Type', get(getBlock(n), 'BlockType'), ...
'Parent', get(getBlock(n), 'Parent') );
blockCell{1, n} = structTable;
end
blockTable = blockCell;
end
对于我的问题,主要是我坚持如何为模型中的所有块创建打击,所以我修复并使用 for 循环来完成它,我还将我的结构分配给在此早期创建的单元格代码。