matlab - 从 MATLAB 命令行窗口搜索 Simulink MATLAB 功能块代码以查找匹配字符串
问题描述
我试图找到一种方法来搜索 Simulink 模型的 MATLAB 功能块的代码,以查找匹配的字符串。
对于单个 MATLAB 函数文件,我可以简单地findstr
在 Windows 命令提示符下使用。但是,这不会搜索 .slx 文件(MATLAB 功能块)中的用户定义函数。它适用于 .m 文件。
我可以在 Simulink 模型中使用 CTRL+F 手动进行搜索。(CTRL+F -> “查看更多” ->输入搜索字符串-> “单击此处在当前系统及以下系统中搜索”)。这为我提供了包含匹配字符串的用户定义 MATLAB 函数的所有块。我希望能够通过 MATLAB 中的命令窗口或 Windows 命令提示符来执行此操作。
我曾尝试通过 Simulink 帮助寻求帮助,并花了一段时间在互联网上搜索,但没有找到任何东西。
有没有办法通过代码执行来进行这种搜索?
解决方案
首先,您需要获取MATLAB Function
模型中所有块的句柄。这可以使用
blockHandles = find(slroot, '-isa', 'Stateflow.EMChart')
请注意,MATLAB Function
块实际上只是一种特殊类型的图表(无需许可证即可Stateflow
附带)。如果您只想要特定块的句柄,那么您可以使用Simulink
Stateflow
blockHandles = find(slroot, '-isa', 'Stateflow.EMChart', 'Path', gcb)
gcb
您感兴趣的块的名称在哪里。
函数中的文本存储在Script
对象的属性中。要显示它(或写入它),请使用
blockHandles(idx).Script
在哪里idx
是指示您感兴趣的块的索引。您可以在循环中使用它来搜索所有块,
for idx = 1:numel(blockHandles)
strfind(blockHandles(idx).Script,'text_to_search_for')
end
推荐阅读
- java - 在firestore中使用多个字段的查询
- python - 如何在 python 中从十六进制数据中绘制波形
- arrays - 在 C 中输出输入数组
- android - 导航组件中的自定义工具栏
- python - UFuncTypeError: ufunc 'clip' 不包含具有签名匹配类型的循环 (dtype('<U32'), dtype('<U32'), dtype('<U32')) -> dtype('<U32')
- python - 如何在 python 中的变量中存储最新的 xrp 价格?
- java - 为什么JAVA中的泛型可以使用数组?
- javascript - 为什么我的 Action 创建者没有将数据分派到 Next js 中的 redux 存储?
- javascript - JS:如何在其他类函数中使用返回的对象?
- firebase - Firestore 只显示本地数据?