为绝对路径引用搜索模型

1视图(30天)
汉斯Guentert
汉斯Guentert 2023年2月1日
回答: Shubham 2023年4月7日
我试图找到grep搜索模型的等效为绝对路径可能被设置在一个GUI仿真软件模型的盒子里面。万博1manbetx这是除了我们的分配清单以确保其他人可以使用我们的模型。我们目前我们所有的模型运行仿真软件项目但这并不保证绝对路径不存在。万博1manbetx目前唯一的方法我们已经是另一个系统上的运行模式,看到如果不能负荷。
这是我目前的尝试但我无法找到一个绝对路径设置工作空间在模型浏览器/模型/工作区数据/文件名称的gui。我可以grep . mdl文件并找到绝对路径保存在模型但我更喜欢一个matlab脚本解决方案。
函数checkForPaths(模型)
load_system(模型)
BlockPaths = find_system(模型, “类型” , “块” );
i = 1:长度(BlockPaths)
我BlockDialogParameters = get_param (BlockPaths {}, “DialogParameters” ); %得到所有对话框参数这一块
ParamNames =字段名(BlockDialogParameters);
%遍历参数值检查如果有一个绝对路径
j = 1:长度(BlockDialogParameters)
ParamNames paramVal = get_param (BlockPaths{我},{j});
%检查paramVal是否绝对路径列表中从依赖报告在这里
断言(~ isLegalPath (paramVal))
结束
结束
结束
函数 bool = isLegalPath(字符串)
存在= java.io.File(字符串).exists ();
isDirectory = java.io.File(字符串).isDirectory ();
isFile = java.io.File(字符串).isFile ();
如果 任何([存在,isDirectory isFile])
bool = java.nio.file.Paths.get(字符串).isAbsolute ();
其他的
bool = false;
结束
结束
1评论
萨钦
萨钦 2023年3月14日
你能提供更多的信息关于绝对路径保存在模型?或者你只是想要你的模型的绝对路径?

登录置评。

答案(1)

Shubham
Shubham 2023年4月7日
你好汉斯,
您可以使用 find_system 函数模型来搜索所有块模型万博1manbetx,然后使用 get_param 函数来检索每个块的参数值。然后,您可以检查任何参数值是否使用绝对路径 isLegalPath 函数的定义。
这里有一个例子如何修改 checkForPaths 函数搜索GUI盒子绝对路径:
函数checkForPaths(模型)
load_system(模型)
%在模型中搜索所有块
BlockPaths = find_system(模型,“类型”,“块”);
%遍历所有块
i = 1:长度(BlockPaths)
%得到所有对话框参数这一块
我BlockDialogParameters = get_param (BlockPaths {},“DialogParameters”);
%的遍历所有参数名称这一块
ParamNames =字段名(BlockDialogParameters);
j = 1:长度(ParamNames)
%得到物体的参数值和参数名称
ParamNames paramVal = get_param (BlockPaths{我},{j});
%检查参数值是一个绝对路径
如果isLegalPath (paramVal)
disp ([“绝对路径中找到块”BlockPaths{我}”,参数”ParamNames {j}“:”paramVal]);
结束
结束
结束
结束
注意,在修改后的函数,我们添加了一个 disp 调用打印出绝对路径中发现GUI盒子。您可以修改这一部分做任何你想做的事绝对路径。
还注意到 isLegalPath 函数定义检查是否一个给定的字符串是一种合法的路径在系统上使用 java.io.File 类。这应该在大多数情况下,但是你可能想要修改它以适合您的特定需求。

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!