simulink matlab独立可执行文件无法获得输出

Posted

技术标签:

【中文标题】simulink matlab独立可执行文件无法获得输出【英文标题】:simulink matlab standalone executable unable to get output 【发布时间】:2017-01-31 18:02:17 【问题描述】:

我有一个 M 脚本,它通过 GUI 从用户那里获取参数值,然后使用更新的参数值模拟 simulink 模型。我想将它转换成一个独立的 exe 文件,它可以在没有 Matlab 和 Simulink 的情况下运行(即只能使用 Matlab 运行时编译器)。我正在使用 MATLAB 2010b 32 位。

我的方法: 由于 Matlab 编译器无法转换 sim 函数,我首先使用 Rapid Simulation 目标将我的 Simulink 模型转换为 exe 文件,然后从我的 matlab 脚本中调用该 exe 文件。

[Gain1, Gain2]= InputDataGUI;
load Par.mat %contains parameter structure of the model
param_struct.parameters.values(1:2) = [Gain1 Gain2]; %update
save Par.mat param_struct;

!SimulinkModelName.exe -p Par.mat
save results.mat

这个脚本在 Matlab 中运行没有错误。最后,我使用 deploytool 将 M 文件与所有其他所需文件一起打包成一个 exe。这个最终的 exe 文件运行 GUI 并保存更新的 Par.mat 文件,但不提供模拟结果文件。我还尝试了 To File 块来保存结果。我认为脚本无法运行模拟。

我解决问题的方法正确吗? 我应该制作一个 simulink mex 文件吗? 提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

您的一般方法是正确的。但是,您可能还没有做几件事,

    在 Simulink 中,模型应设置为使用 From File 模块作为输入,To File 模块作为输出 在 MATLAB 中,需要设置代码以生成 .mat 文件,不仅用于参数,还用于输入信号。 运行仿真时,使用-p 指定参数,-f 指定输入文件(如果要覆盖模型本身中指定的文件),-o 指定输出文件的名称您希望写入数据(如果您想覆盖模型本身中指定的数据)。 在您(已部署)的 MATLAB 代码中,您需要读取生成的 .mat 文件以存储输出,并对其进行适当的处​​理(即绘制)。

【讨论】:

嗨菲尔。感谢您的回复。 我已经检查过了,我已经在关注所有这些要点。目前我只是用正弦输入进行测试。所以,不需要输入文件。我正在使用“到文件”来存储输出。我也只是使用默认输出文件名进行测试。经过一些测试,我认为不可能将 exe 文件打包到另一个 exe 文件中。我今天发现,当我在 Matlab 中运行最终的 exe 文件(由 deploytool 制作)时,它无法访问 Simulink Model exe。我收到错误“SimulinkModelName.exe 命令写入错误或找不到” @Phil,感谢您提供的信息。是否有任何官方 MathWorks 文档详细说明独立 exe 中可用的参数?

以上是关于simulink matlab独立可执行文件无法获得输出的主要内容,如果未能解决你的问题,请参考以下文章

适用于 MATLAB 独立可执行文件的 MCR 8.1

将MATLAB程序发布为独立的可执行的程序包.exe

.m 文件中的工作区不会导入到 simulink 模型中。 MATLAB

matlab callback 数据传递

MATLAB调用simulink时出现如下错误

2.MATLAB/Simulink安装