首页 文章

MATLAB deploytool simulink未定义函数'load_system'

提问于
浏览
0

我正在使用一个MATLAB文件代码,它加载一个simulink文件,运行它并在复杂的并行循环中对它进行多次评估 .

它在MATLAB环境中运行完美 . 通过 deploytool 命令编译代码,安装它并从命令行运行它时,我会遇到困难 .

在它加载模型的行,

mymodel= ... ;
load_system(mymodel);

我收到以下错误

C:\Program Files\mymain\application>Warning: Name is nonexistent or not a directory: model
> In path at 109
  In addpath at 86
  In run_main at 3
Warning: Name is nonexistent or not a directory: data
> In path at 109
  In addpath at 86
  In run_main at 4
Warning: Name is nonexistent or not a directory: graphics
> In path at 109
  In addpath at 86
  In run_main at 5
Starting parallel pool (parpool) using the 'local' profile ... connected to 2 workers.
Initializing ...
Undefined function 'load_system' for input arguments of type 'char'.

Error in run_main (line 40)


MATLAB:UndefinedFunction

我不关心警告(因为我不关心大多数其他MATLAB警告)但是我得到关于不能识别打开simulink模型('load_system')的函数的错误:

Undefined function 'load_system' for input arguments of type 'char'.

我做了搜索,发现了以下问题:

load_system using MCR

Deployment of Simulink Models

第一个链接说

question highlight

我只是感到困惑:是关于编译到C还是.NET的部署工具?是应该增加速度还是单独成为唯一的优势?

两个链接的问题在于他们谈论战略 . 但是如何实现它们呢?如何编译使用 load_systemsim 命令加载和模拟模型的MATLAB代码?

任何人都可以逐步解决一个非常简单的MATLAB代码示例(m文件)来模拟模型然后编译它们吗?

1 回答

  • 1

    文档屏幕截图的第一句是重要的一句 . 正如@Navan所提到的(在评论中),Simulink功能与MATLAB Compiler不兼容 . 也就是说,使用MATLAB编译器时,任何使用Simulink功能( load_systemsim 等)的m代码都不会执行 .

    假设您可以访问Simulink Coder,并且您的模型不包含阻止其转换为c代码的功能,那么您唯一的选择是将应用程序分为两部分:

    • 使用Simulink模型:使用Simulink Coder从模型中创建可执行文件 . 在doc中有几个这样做的例子,包括Using RSIM Target for Batch Simulations . 有各种命令行选项,用于通过mat文件将新参数集和输入传递给可执行文件 . 模拟结果(即通常写入MATLAB工作区的内容)将写入由可执行文件创建的mat文件 .

    • 在你的MATLAB代码中:用调用(通常使用 system 函数,如链接示例中所示)将所有Simulink功能替换为在步骤1中创建的可执行文件 . 在此调用之前,'ll need to create a mat file with all your parameters in it; and after the call you' ll想要从mat文件中读取结果由可执行文件创建 .

    这不是一个简单的过程,但可以做到 .

相关问题