无法使用Matlab Coder将Matlab代码转换为C代码

时间:2018-12-04 12:38:04

标签: c matlab code-generation mex matlab-coder

我有一个如下所示的MATLAB代码。我正在尝试使用MATLAB Coder将此代码转换为C代码,但是遇到错误。

enter image description here

  

期望逻辑,char,int,fi,single或double。找到一个mxArray。 MxArray是从对MATLAB解释器的调用中返回的,表达式内部不支持MxArray。它们只能在赋值的右侧使用,并作为外部函数的参数。

O6-U6

这个问题可能是重复的,但我搜索了互联网,但找不到任何相关的帖子。有什么办法可以解决这个错误?

1 个答案:

答案 0 :(得分:5)

您已将tic, toc声明为外部变量,这是正确的,因为代码生成不支持它们。由于它们是外部的,因此这些函数的结果不能直接在其他表达式中使用。编码器在运行时不知道这些结果的内容。但是您可以通过将其结果分配给已知变量来提供有关其类型的提示。您应该替换行

while toc < 60

包含以下几行

tElapsed = 0;
tElapsed = toc;
while tElapsed < 60

由于我们将tElapsed初始化为0,因此它是已知的双标量类型。将toc的输出分配给tElapsed时,将转换为这种类型。

还请注意,使用MATLAB Coder生成mex文件时,您的代码可以正常工作。但是,由于外部函数需要运行MATLAB,因此您无法从中生成独立代码。