matlab和c的调用问题

matlab和c的调用问题,第1张

当一个MEX文件正在运行时发生了出错。 如果这个MEX文件不是一个官方文件的函数,就请检查他源代码的错误。 请请教外部的接口针对数据的导引调试该MEX文件。

如果它是一个官方的 MathWorks 函数

对MathWorks 的这一个问题方面遵从这些步骤

我们有改正它的最好机会:

1 为自动化的分析送这一项毁坏报告给 segv@mathworkscom 。

对于你的方便,这数据已经被记录在:

C:\ DOCUME~1\ xs\ LOCALS~1\ Temp\ matlab_crash_dump3924

2 同时, 如果问题是可再次出现的,发送破坏的数据给

support@mathworkscom 向前由于:

- 一本将会再生问题的步骤特定目录

- 必需再生问题的任何 M ,MEX, MDL 或其他的文件

- 任何的错误信息在破坏报告上有所体现。

一个有技术且支持你的工程师将会连络你。

定义函数:function [a,b]=F(c)

a=2c;

b=3c

end

这样就定义了一个F函数,输入为c,输出为a,b

调用函数:在命令窗口输入:F(2)即完成调用

太可以了,并且非常简单,只需存在同一个目录下即可,例如,把

function f=fx(x)

f=x^2+x+1

存为fxm

调用时

function hhh

gx=fx(3)+fx(5)

运行结果:

gx = 44

我看了一下lsqnonlin函数的源码,调用了很多其他的函数,光核心的函数调用就在四五个以上。我感觉你可以试试matlab2012b中的code generator看看能不能直接生成C函数;另外不知道你能不能接受把matlab函数编译成dll调用的方式,这个方式一定能成功而且支持版本很多,但是算法运行起来比较慢;最后,也是最麻烦但最正常的方法,自己读一下lsqnonlin的帮助,里面有算法描述和参考文献,然后自己另去网上查找C版本的实现(估计这种经典算法会有现成版本的)或者自己写一个。

 要解决相关的mex命令找不到编译器,首先就需要了解相关命令调用的配置文件的路径位于:<MatlabRoot>/bin/win64/mexopts,里面有很多和和编译器以及SDK相关的环境配置文件,如图所示。

1、matlab版本问题

标明了不同类型版本的编译器配置文件,如果编译器版本的配置信息不在这个文件夹里面自然会提示找不到到文件夹。这类问题网上有很多解决方法,提供了很多相应版本的配置文件,只要将其拷到mexopts文件夹下,就解决了。

2、配置文件里面的路径和电脑的实际路径不一致  

解决方法:要仔细核对 msvc2013xml和msvcpp2013xml这两个配置文件的信息。

扩展资料:

通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。

MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C函数,得出的结果再通过该接口调回Matlab。该特定接口的 *** 作,包含在mexFunction这个函数中,由使用者具体设定。 

-mex文件

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12188643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存