在matlab中能够很好运行的M文件,将程序放在simulink/embeddedmatlabfunction模块中运行,出现很多错误,比如:1、有些变量需要预定义,和C... 在matlab 中能够很好运行的M文件,将程序放在simulink/embedded matlab function 模块中运行,出现很多错误,比如:
1、有些变量需要预定义,和C语言差不多;我已经解决;
2、有些函数无法调用,如disp,需要申明eml.extrinsic('disp');我已经解决;
等等,还有一些问题,我无法解决,报错如下:
Code Directory :"E:\Work\MATLAB R2010a\MOTOMAN PAPER\dual-quaternion+based+to+solve+6R+robot+\slprj\_sfprj\untitled\_self\sfun\src"Machine (#73): "untitled" Target : "sfun"Chart "Embedded MATLAB Function" (#74):."c2_untitled.h""c2_untitled.c""untitled_sfun.h""untitled_sfun.c""untitled_sfun_debug_macros.h"Interface and Support files:"untitled_sfun_registry.c"Code generation failed Index exceeds matrix dimensions.

其中,E:\…… 是我的工作目录,untitled.mdl是我的simulink 模型名称。

他好像说我的程序矩阵溢出,我也不知道那里溢出,但是,这个程序的M文件我运行,没有任何错误和警告。

不胜感激,如有高手解答,定当高分追加。。
再次谢谢!
  1. 所谓D版不稳定的说法,很大程度上属于商家的一种危言耸听。我单位买过正版,但实际上使用多数时候还是用D版(因为正版只买了几个模块,有时候不够用),多年来从没遇到过在D版上不行但正版可以的情况。不过如果你有条件用正版去试,当然也不妨一试。

  2. 你贴出来的这个图不能提供任何对分析你所遇到的问题有价值的信息。

  3. 如果你出于某种考虑(比如保密)而不愿贴出Embedded MATLAB Function代码,可以试着逐步删减代码,以定位问题出在什么位置。

  4. 给你一个古老的建议:遇到问题时,还是请先从怀疑自己入手,因为对于绝大多数个人作者,编出的代码有问题的可能性远远高于软件或硬件系统出BUG的概率。

谢谢你的建议,这点我也知道。知道最后,我将虽偶有代码全部注释后只剩两三行了。
我的程序很简单,就两三行。
这时候发现问题了:
我继续运行,还是报错,错误就如上面所示,也看不出来是哪儿错了。
我后面换了个文件夹,将这个 mdl模型到新的文件夹下面运行,(程序还是只有两三行),结果正确了。
反复试验了N次,结果还是这样。
我有点怀疑 D板的问题
你能把新建的和原来的两个文件夹名字贴一下吗?我怀疑有可能涉及到文件系统的问题——至少到现在为止,我觉得这种可能性远大于D版的原因。

比如用BT软件下载电影,我遇到过有的文件长度为0,但BT软件报的却是几个G,后来查明原因是路径名太长(但很奇怪BT软件却可以访问,因为把路径名改短之后,文件就正确了,说明之前的下载有效)。

MATLAB对于文件夹名称的要求比起一般软件要苛刻很多,不仅仅是长度,还涉及里面用到什么字符。