是MATLAB中当前的Simulink系统模型或子系统

时间:2012-09-12 06:49:24

标签: matlab simulink matlab-deployment

我有一个.m文件,我在其中使用Simulink模型执行某些操作,我想检查当前使用的模型是整个模型还是子系统。是否有特定的语法或功能来检查这个?我需要能够以不同的方式执行操作,具体取决于Simulink系统。

4 个答案:

答案 0 :(得分:1)

isEntireModel = isequal( get_param( gcs, 'Type' ), 'block_diagram' );

答案 1 :(得分:1)

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

sysname = 'f14/Actuator Model';
istoplevel = strcmp(bdroot(sysname), sysname);

答案 2 :(得分:0)

您可以在打开模型后尝试此操作,或者将gcs替换为系统名称[确保在使用load_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

答案 3 :(得分:0)

更简单的方法是,比如你的模型名称是vdp,然后是:

bdIsLoaded(' VDP&#39)