1

我有一个 .m 文件,我在其中对 Simulink 模型执行一些操作,并且我想检查当前使用的模型是整个模型还是子系统。是否有特定的语法或功能来检查这一点?我需要能够根据 Simulink 系统执行不同的操作。

4

4 回答 4

1
isEntireModel = isequal( get_param( gcs, 'Type' ), 'block_diagram' );
于 2012-09-12T15:32:46.083 回答
1

您始终可以使用bdroot获取顶级系统的名称并使用字符串比较来查看您是否有子系统:

sysname = 'f14/Actuator Model';
istoplevel = strcmp(bdroot(sysname), sysname);
于 2012-09-13T03:46:00.180 回答
0

您可以在打开模型后尝试此操作,还是替换gcs为系统名称[确保在使用 withload_systemopen_system] 之前加载它:

h=find_system(gcs,'FindAll',1,'SearchDepth',1,'BlockType','SubSystem');
if isempty(h)
    disp('Has Subsystems');
else
    disp('No Subsystems');
end
h=find_system(gcs,'FindAll',1,'SearchDepth',1,'BlockType','ModelReference');
if isempty(h)
    disp('Has Models');
else
    disp('No Models');
end
于 2012-09-16T16:34:44.643 回答
0

更简单的方法是,假设您的型号名称是 vdp,然后:

bdIsLoaded('vdp')

于 2014-12-08T18:46:26.083 回答