我正在使用一个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'.
我进行了搜索,发现了以下问题:
第一个链接说
我很困惑:是关于编译到C ++还是.NET的部署工具? 是应该增加速度还是单独成为唯一的优势?
两个链接的问题在于他们谈论战略。但是如何实现它们呢?如何编译使用load_system
和sim
命令加载和模拟模型的MATLAB代码?
任何人都可以逐步解决一个非常简单的MATLAB代码示例(m文件)来模拟模型然后编译它们吗?
答案 0 :(得分:1)
文档屏幕截图的第一句是重要的一句。正如@Navan所述(在评论中),Simulink功能与MATLAB Compiler不兼容。也就是说,任何使用Simulink功能(load_system
,sim
等)的m代码在使用MATLAB编译器时都不会执行。
假设您有权访问Simulink Coder,并且您的模型不包含阻止其转换为c代码的功能,那么您唯一的选择就是将应用程序分为两部分:
system
函数,如链接示例所示)到步骤1中创建的可执行文件。在此调用之前,您需要创建一个包含所有参数的mat文件;并且在调用之后,您将要读取可执行文件创建的mat文件的结果。这不是一个简单的过程,但可行。