2013-11-20 61 views
0

我试图用一个嵌入式matlab函数来模拟一个非常简单的模型,该函数使用一个输入到matlab函数中的常量块来获取输入并添加10的值,然后输出到显示块。Simulink中嵌入函数的问题

只要我按下模拟,我会得到大量的错误。首先,我得到橙色文本巨大的一段陈述警告了求解'variableStepDiscrete',而不是那些从命令提示符中回显的求解'ode45'

这里是其余各行:

Code Directory : 
"/Users/dazgti/Documents/MATLAB/slprj/_sfprj/embeddedFunction/_self/sfun/src" 

Machine (#32): "embeddedFunction" Target : "sfun" 


Chart "MATLAB Function" (#49): 

. 
    "c2_embeddedFunction.h" 
"c2_embeddedFunction.c" 

"embeddedFunction_sfun.h" 

"embeddedFunction_sfun.c" 

"embeddedFunction_sfun_debug_macros.h" 


Interface and Support files: 

"embeddedFunction_sfun_registry.c" 

Code generation failed Attempt to execute SCRIPT union as a function: 
/Users/dazgti/Documents/MATLAB/union.m 

我有一个脚本文件在我的matlab目录中调用union.m,但我不知道为什么它提到它。

sim

function y = fcn(u) 
%#codegen 

x = u + 10; 

y = x; 

回答

1

MATLAB功能块的工作原理是 “C” 为代码在你的块中输入的MATLAB代码。在生成代码的过程中,可能会从MATLAB函数块基础结构调用MATLAB中的联合函数。由于您已经重写了联合函数而不是内置函数,MATLAB可能会试图调用导致错误的脚本。最好避免将您的函数命名为与MATLAB内置函数相同的名称。

+0

谢谢。我已将函数名称更改为'hello(u)',但问题仍然存在。我很久没有使用我的'union.m'脚本,所以我不知道它为什么试图找到它。这是我第一次试图在simulink中嵌入一个函数。 – user1574598

+0

唯一的解决方法是从MatLab路径中取出'union.m',这对我来说似乎是荒谬的。当最初删除关于MatLab找不到与XCode一起提供的C编译器的'union.m'文件时,我还遇到了另一个问题。除了'union.m'文件的最初问题之外,现在已经解决了这个问题。 – user1574598

+0

MATLAB在当前目录中运行,然后添加的路径优先于内置路径。在MATLAB中,你可以做“哪个 - 所有联合”,并看看它返回什么?它应该只包含内置或在你的MATLAB安装下。 – Navan