是否有可能出现一段时间的错误或没有错误的Matlab

问题描述 投票:2回答:1

在我的matlab脚本中,我正在解析具有特定标记结构的文本文件,并为每个发现的特殊标记创建Simulink Block。一个简单的例子我有这个:

[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个[Link]名称为On / Off,它也会创建On / Off,On / Offx,On / Offxx,On / Offxxx或最后带数字。

谢谢你的帮助!我试着尽可能地解释。

matlab while-loop try-catch
1个回答
3
投票

你应该用try, catch方法做一些测试。因为你没有给我们MCVE所以我只能给你未经测试的代码:

i=0
While i==0
    i=1 %An assumption that code will pass
    try
        sim('ModelName', ParamStruct);
    catch SimErr
        i=0
        %change some parameters in your model below
        %add a "x" at the end of the name of the new block or whatever you need
    end
end

低音 - 如果没有错误,i将保持更改为1并制动循环。如果错误发生 - 它也会将i更改回0,以保持循环继续。在catch语句中,您可以将一些更改传递给模型,只要它不通过,就可以迭代地尝试新参数。

© www.soinside.com 2019 - 2024. All rights reserved.