MATLAB中find_system用法

目录

语法

说明

示例

查找已加载的系统及其模块

查找特定的系统及其模块

返回加载的模型、子系统和库的名称

搜索子系统的子级

使用多个条件进行搜索

以句柄形式返回信号线和注释

搜索特定的模块参数值

使用正则表达式进行搜索

正则表达式搜索部分匹配

更新子系统中的库链接

以句柄形式返回值


        find_system工能是查找系统、模块、信号线、端口和注释。

语法

Objects = find_system
Objects = find_system(System)
Objects = find_system(Name,Value)
Objects = find_system(System,Name,Value)

说明

        ​Objects = find_system 返回已加载的系统及其模块,包括子系统。​

        Objects = find_system(System) 返回指定的系统及其模块。

        ​Objects = find_system(Name,Value) 返回已加载的系统以及这些系统中满足一个或多个 Name,Value 对组参数指定的条件的对象。您可以使用此语法指定搜索约束和搜索特定的参数值。在参数和值对组之前指定搜索约束。

        ​Objects = find_system(System,Name,Value) 返回指定系统中满足指定条件的对象。

示例

查找已加载的系统及其模块

        返回所有已加载的系统及其模块的名称。

load_system('vdp')
find_system
ans = 15x1 cell
    {'vdp'                     }
    {'vdp/Constant'            }
    {'vdp/More Info'           }
    {'vdp/More Info/Model Info'}
    {'vdp/Mu'                  }
    {'vdp/Mux'                 }
    {'vdp/Product'             }
    {'vdp/Scope'               }
    {'vdp/Square'              }
    {'vdp/Sum'                 }
    {'vdp/Sum1'                }
    {'vdp/x1'                  }
    {'vdp/x2'                  }
    {'vdp/Out1'                }
    {'vdp/Out2'                }

        返回已加载的系统和库,包括 vdp。

查找特定的系统及其模块

        返回 vdp 系统及其模块。

load_system({'vdp','ex_sldemo_clutch'})
find_system('vdp')
ans = 15x1 cell
    {'vdp'                     }
    {'vdp/Constant'            }
    {'vdp/More Info'           }
    {'vdp/More Info/Model Info'}
    {'vdp/Mu'                  }
    {'vdp/Mux'                 }
    {'vdp/Product'             }
    {'vdp/Scope'               }
    {'vdp/Square'              }
    {'vdp/Sum'                 }
    {'vdp/Sum1'                }
    {'vdp/x1'                  }
    {'vdp/x2'                  }
    {'vdp/Out1'                }
    {'vdp/Out2'                }

返回加载的模型、子系统和库的名称

        返回加载的模型、子系统和库的名称。仅当子系统可以独立加载时,才会返回子系统名称。

load_system('vdp');
find_system('type','block_diagram')
ans = 1x1 cell array
    {'vdp'}

搜索子系统的子级

        返回作为 ex_sldemo_clutch 系统的 Unlocked 子系统的子级存在的所有 Goto 模块的名称。

load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')

ans = 2x1 cell
    {'ex_sldemo_clutch/Unlocked/Goto' }
    {'ex_sldemo_clutch/Unlocked/Goto1'}

使用多个条件进行搜索

        在 vdp 系统中进行搜索,并返回增益值设置为 1 的所有 Gain 模块的名称。

load_system('vdp');
find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
    {'vdp/Mu'}

以句柄形式返回信号线和注释

        获取 vdp 系统中所有信号线和注释的句柄。对于 'FindAll',不管如何指定要搜索的系统,该函数都会返回句柄。

load_system('vdp');
L = find_system('vdp','FindAll','on','type','line')
L = 19×1

   34.0004
   33.0004
   32.0004
   31.0004
   30.0004
   29.0004
   28.0004
   27.0004
   26.0004
   25.0004
      ⋮

A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1

   36.0004
   35.0004

搜索特定的模块参数值

        在 vdp 和 ex_sldemo_clutch 系统中查找值为 0 的任何模块对话框参数。

load_system({'vdp','f14'})
find_system({'vdp','f14'},'BlockDialogParams','0')
ans =

  32×1 cell array

    {'vdp/More Info'                                              }
    {'vdp/More Info/Model Info'                                   }
    {'vdp/Scope'                                                  }
    {'vdp/x2'                                                     }
    {'vdp/Out1'                                                   }
    {'vdp/Out1'                                                   }
    {'vdp/Out2'                                                   }
    {'vdp/Out2'                                                   }
    {'f14/Aircraft↵Dynamics↵Model'                              }
    {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
    {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
    {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)'      }
    {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)'      }
				.
				.
				.

使用正则表达式进行搜索

        在当前加载的系统的顶层查找模块对话框参数值以 3 开头的所有模块。

load_system({'ex_sldemo_clutch','vdp'});
find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 4x1 cell
    {'vdp/Scope'         }
    {'vdp/Scope'         }
    {'vdp/Square'        }
    {'ex_sldemo_clutch/w'}

正则表达式搜索部分匹配

        使用正则表达式进行搜索时,可以指定要匹配的字符向量的一部分,以返回包含该字符向量的所有对象。在 ex_sldemo_clutch 模型中查找所有 Inport 和 Outport 模块。

load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch','regexp','on','blocktype','port')
ans = 39x1 cell
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction Mode Logic/Tin'                   }
    {'ex_sldemo_clutch/Friction Mode Logic/Tfmaxs'                }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/lock'       }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/unlock'     }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/locked'     }
    {'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tin'}
    {'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tf' }
    {'ex_sldemo_clutch/Friction Mode Logic/locked'                }
    {'ex_sldemo_clutch/Friction Mode Logic/lock'                  }
    {'ex_sldemo_clutch/Friction Mode Logic/unlock'                }
    {'ex_sldemo_clutch/Friction Mode Logic/Tf'                    }
    {'ex_sldemo_clutch/Locked/Tin'                                }
    {'ex_sldemo_clutch/Locked/w'                                  }
    {'ex_sldemo_clutch/Unlocked/Tfmaxk'                           }
    {'ex_sldemo_clutch/Unlocked/Tin'                              }
    {'ex_sldemo_clutch/Unlocked/we'                               }
      ⋮

更新子系统中的库链接

        在本示例中,myModel 只包含一个子系统,它是一个库链接。上次打开模型后,向库中对应的子系统中添加了一个 Gain 模块。

        打开模型。使用 find_system 并将 'FollowLinks' 设置为 'off'。此命令不会跟随库链接进入子系统,并且只返回顶层子系统。

open_system('myModel')
find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')

ans = 

    'myModel'
    'myModel/Subsystem'

        使用 find_system 并将 'FollowLinks' 设置为 'on'。find_system 将更新库链接,并返回子系统中的模块。

find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain
Updating Link: myModel/Subsystem/Gain

ans = 

    'myModel'
    'myModel/Subsystem'
    'myModel/Subsystem/Gain'

以句柄形式返回值

        将该系统作为句柄提供给 find_system。搜索值为 0 的模块对话框参数。如果对同一个模块多次调用 get_param,则使用模块句柄比以字符向量形式指定完整模块路径更高效。

load_system('vdp');
sys = get_param('vdp','Handle');
find_system(sys,'BlockDialogParams','0')
ans = 8×1

    3.0006
    4.0006
    8.0006
   13.0006
   14.0006
   14.0006
   15.0006
   15.0006

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值