1. MATLAB App Designer与Simulink联合仿真问题深度解析
最近在做一个工业控制系统的仿真项目时,遇到了一个棘手的问题:在MATLAB App Designer中调用Simulink模型进行联合仿真时,桌面环境下运行正常,但打包成独立EXE后却报错"未识别类'string'的方法、属性或字段'modelInfo'"。这个问题困扰了我整整两天,经过反复排查和验证,终于找到了根本原因和解决方案。下面我就把这个问题的完整排查过程和解决方法分享给大家。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题现象与初步分析
2.1 错误现象描述
在App Designer开发的界面中,点击运行按钮执行以下代码时出现问题:
matlab复制try
sim('OnlineControl2.slx',...);
catch ME
uialert(app.UIFigure, ME.message, 'Error');
end
在MATLAB桌面环境运行正常,但打包成独立EXE后出现错误弹窗,提示:
code复制仿真执行失败:未识别类'string'的方法、属性或字段'modelInfo'
2.2 问题本质分析
这个错误看似是字符串类型的问题,实际上根源在于Simulink模型在部署环境下的调用方式不正确。经过深入分析,我发现:
- 桌面环境和部署环境对
sim函数的处理机制不同 - 直接传递模型名称字符串的调用方式在部署环境下不被支持
- 错误信息中的"modelInfo"是Simulink内部实现细节,不是公开API的一部分
3. 解决方案详解
3.1 推荐方案:使用SimulationInput对象
这是最可靠且官方推荐的解决方案,具体实现如下:
matlab复制% 创建SimulationInput对象
in = Simulink.SimulationInput('OnlineControl2.slx');
% 配置部署参数
in = simulink.compiler.configureForDeployment(in);
% 执行仿真
simOut = sim(in);
为什么这个方案有效?
SimulationInput对象提供了更可控的仿真配置
