【发布时间】:2019-04-16 09:27:37
【问题描述】:
在我的 matlab 脚本中,我正在解析具有特定标签结构的文本文件,并为我发现的每个特殊标签的出现创建 Simulink 块。我有一个简单的例子:
[Link]
Link_Name : On/Off
Link_ID : _sZfSkku9Eemg_bhrv2HEbw
[Link]
Link_Name : On/Off
Link_ID : _qsYbsVeeEemna8dVWPKMTw
您可以看到这不是同一个对象,但它们具有相同的名称,因此当我在 matlab 中为每个链接创建一个 simulink 块时,我发现我有一个错误 "can't create a new On/Off Block" 类似的东西。
所以我将 ID 放在块的描述中,如果相同,我只需更新名称,以防用户更改文本文件中的名称:
set_param(gcb,'Name', link_NameValue);
如果不同,我创建一个新块:
add_block('simulink/Ports & Subsystems/In1',[component_NameValue '/' link_NameValue], 'MakeNameUnique', 'on');
问题在于'MakeNameUnique', 'on' 如果我多次运行我的脚本并且set_param 我有一个错误,它将创建一个无限的块
The name 'On_Off' already exists
所以我想做一个这样的while循环:
while error "can't create a new block"
add a "x" at the end of the name of the new block
end
or
while error "The name 'On_Off' already exists"
add a "x" at the end of the name of the existing block
end
因此,即使我有 4 个名称为 On/Off 的 [Link],它也会创建 On/Off、On/Offx、On/Offxx、On/Offxxx 或在可能的情况下以数字结尾。
感谢您的帮助!我试图尽可能简短地解释。
【问题讨论】:
标签: matlab while-loop try-catch