【问题标题】:Is current Simulink system model or subsystem in MATLAB是 MATLAB 中的当前 Simulink 系统模型或子系统
【发布时间】:2012-09-12 06:49:23
【问题描述】:

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

【问题讨论】:

  • 我编辑了您的问题,以便更清楚地说明它与 Simulink 模型有关,并添加了 simulink 标签。

标签: matlab simulink matlab-deployment


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    isEntireModel = isequal( get_param( gcs, 'Type' ), 'block_diagram' );
    

    【讨论】:

    • 我在哪里可以给出当前系统的名称以知道它是模型还是子系统
    • 用您的系统名称替换对gcs函数的调用。
    【解决方案3】:

    你能在打开你的模型后试试这个,或者用系统名称替换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
    

    【讨论】:

      【解决方案4】:

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

      bdIsLoaded('vdp')

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        • 2022-06-29
        相关资源
        最近更新 更多