我有一个如下所示的MATLAB代码。我正在尝试使用MATLAB Coder将此代码转换为C代码,但是遇到错误。
期望逻辑,char,int,fi,single或double。找到一个mxArray。 MxArray是从对MATLAB解释器的调用中返回的,表达式内部不支持MxArray。它们只能在赋值的右侧使用,并作为外部函数的参数。
O6-U6
这个问题可能是重复的,但我搜索了互联网,但找不到任何相关的帖子。有什么办法可以解决这个错误?
答案 0 :(得分:5)
您已将tic, toc
声明为外部变量,这是正确的,因为代码生成不支持它们。由于它们是外部的,因此这些函数的结果不能直接在其他表达式中使用。编码器在运行时不知道这些结果的内容。但是您可以通过将其结果分配给已知变量来提供有关其类型的提示。您应该替换行
while toc < 60
包含以下几行
tElapsed = 0;
tElapsed = toc;
while tElapsed < 60
由于我们将tElapsed初始化为0,因此它是已知的双标量类型。将toc的输出分配给tElapsed时,将转换为这种类型。
还请注意,使用MATLAB Coder生成mex文件时,您的代码可以正常工作。但是,由于外部函数需要运行MATLAB,因此您无法从中生成独立代码。