使用存在检查 Simulink-Block 是否具有参数“SampleTime”

Max*_*Max 1 matlab simulink parameter-passing

我想编写一个函数,自动将SampleTime模型中所有模块的参数更改为特定值。我可以使用find_system来查找所有块,然后我可以循环所有块并使用set_param('Blockpath','SampleTime','0.001'). 但如果我这样做并且该块没有名为 的参数SampleTime,它将使我的程序崩溃。
所以我的问题是如何在设置参数之前查出该参数是否存在?我尝试过类似的事情exist(['blockpath','/SampleTime']),但它没有达到我的预期。有任何想法吗?

Dan*_*iel 5

您可以使用get_param('blockpath','ObjectParameters')来获取包含所有参数的结构,然后使用isfield来检查是否可以找到SampleTime.

我认为你所做的不是一个好主意。在典型的 simulink 模型中,您仅在极少数位置设置采样时间,并使用继承的采样时间运行所有其他模型。大多数情况下,改变这几个地方是没有问题的。

如果您有很多模块或者经常更改采样时间,最好使用工作区变量或封装参数。将所有块设置为具有采样时间x,并放入x=0.01基础工作空间中为所有块设置采样时间。