首页 > 解决方案 > 从 MATLAB 命令行窗口搜索 Simulink MATLAB 功能块代码以查找匹配字符串

问题描述

我试图找到一种方法来搜索 Simulink 模型的 MATLAB 功能块的代码,以查找匹配的字符串。

对于单个 MATLAB 函数文件,我可以简单地findstr在 Windows 命令提示符下使用。但是,这不会搜索 .slx 文件(MATLAB 功能块)中的用户定义函数。它适用于 .m 文件。

我可以在 Simulink 模型中使用 CTRL+F 手动进行搜索。(CTRL+F -> “查看更多” ->输入搜索字符串-> “单击此处在当前系统及以下系统中搜索”)。这为我提供了包含匹配字符串的用户定义 MATLAB 函数的所有块。我希望能够通过 MATLAB 中的命令窗口或 Windows 命令提示符来执行此操作。

我曾尝试通过 Simulink 帮助寻求帮助,并花了一段时间在互联网上搜索,但没有找到任何东西。

有没有办法通过代码执行来进行这种搜索?

标签: matlabsearchfinduser-defined-functionssimulink

解决方案


首先,您需要获取MATLAB Function模型中所有块的句柄。这可以使用

blockHandles = find(slroot, '-isa', 'Stateflow.EMChart')

请注意,MATLAB Function块实际上只是一种特殊类型的图表(无需许可证即可Stateflow附带)。如果您只想要特定块的句柄,那么您可以使用SimulinkStateflow

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

推荐阅读