在matlab中如何调用执行外部程序呢

在matlab中如何调用执行外部程序呢,第1张

简单地方法是通过磁盘文件交换数据,先将c程序运行结果保存为磁盘文件,然后再通过matlab读取;

还有一个方法比较烦,但是要快很多,就是将你的c程序编译成mex文件,可以在matlab里面直接调用。具体怎么 *** 作可以到网上找资源,非常多

c不是函数,只是源文件的格式,与matlab是不同的

我matlab编程不熟,不过你说的这种如果只有一个函数的问题,你就把那个函数的声明定义copy到你调用的c文件,编译一下,不就行了?

也就是里面,对于mexutilsc中有用于siftlocalmaxc的函数,复制过来,把第二行去掉,编译一下,就行了吧

不过话说,我觉得应该调用exe而不是c吧,这位大哥

matlab上的程序在C语言上能运行。matlab是一种科学的计算语言,采用的是解释执行的方式,所有在C语言上能运行。

有一个通俗的比喻,

如果程序设计语言是车,那么C

语言就是全能手,

C十十语言是加强版的C

语言,

MATLAB

是科学家用来完成特殊任务的工具。作为使用MATLAB

的科学家和工程师,

通过混合程序设计,就可以借用CIC十十语言这两个全能手增强MATLAB

的功能;作为使用C/C十十语言开发的开发者,也可以通过混合程序设计来使用MATLAB强大的科学计算与数据可视化功能。

matlab 主要使用矩阵,变量是矩阵,运算是矩阵。即使是C语言中的一个简单变量,matlab也要视它为矩阵。

C语言程序放入matlab使用:

(1)必须改写main(){},把main(){},变成 matlab 入口函数 mexFunction(){},

(2)其它功能性函数/子程序不需变化。

(3)加头文件 #include "mexh"

你需要学习一下mexFunction(){} 如何书写,参数意义等。这里就不费笔墨了。

入口函数样子:

void mexFunction(int nlhs,mxArray plhs[], int nrhs, const mxArray prhs[])

{

//一般变量声明

//检查输入输出参数

//为输出参数创建矩阵,输出指针指向它

//输入指针输出指针赋值

//调用功能性函数/子程序

}

编译:

mex my_programc

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

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

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

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

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

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

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

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

support@mathworkscom 向前由于:

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

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

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

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

Matlab 是当前应用最为广泛的数学软件,具有强大的数值计算、数据分析处理、系统 分析、图形显示甚至符号运算等功能[1]。利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分析计算的效率[2][3]。但与其他高级程序[3]相比,Matlab 程序 是一种解释执行程序,不用编译等预处理,程序运行速度较慢[4]。

C/C++语言是目前最为流行的高级程序设计语言之一[5]。它可对 *** 作系统和应用程序以 及硬件进行直接 *** 作,用C/C++语言明显优于其它解释型高级语言,一些大型应用软件如 Matlab 就是用C 语言开发的。

在工程实践中,用户经常遇到Matlab 与C/C++混合编程的问题。本文基于Matlab 65和VC60 开发环境,在Windows 平台下就它们之间的混合编程问题进行深入研究并举例说明。

2 Matlab 调用C/C++

Matlab 调用C/C++的方式主要有两种:利用MEX 技术和调用C/C++动态连接库。

在Matlab 与C/C++混合编程之前,必须先对Matlab 的编译应用程序mex 和编译器mbuild进行正确的设置[1]:

对Matlab 编译应用程序mex 的设置:Mex –setup

对Matlab 编译器mbuild 的设置:Mbuild –setup

21 调用C/C++的MEX 文件

MEX 是Matlab Executable 的缩写,它是一种“可在Matlab 中调用的C(或Fortran)语 言衍生程序”[6]。MEX 文件的使用极为方便,其调用方式与Matlab 的内建函数完全相同,只 需在Matlab 命令提示符下键入MEX 文件名即可。

一个C/C++的MEX源程序通常包括4个组成部分,其中前3个是必须包含的内容,第4个则根据所实现的功能灵活选用:(1)#include “mexh”;(2)MEX文件的入口函数mexFunction, MEX文件导出名必须为mexFunction函数;(3)mxArray;(4)API函数

MATLAB调用C语言是不需要增加头文件的。

例如你有一个

newc

需要被matlab调用,则如下 *** 作:

把newc放在MATLAB当前目录中,在MATLAB中输入mex

newc。然后matlab会生成编译文件newmexW32。你就可以直接在matlab中调用newc里的函数了。当然c文件里面的函数格式必须按照matlab的要求来。

以上就是关于在matlab中如何调用执行外部程序呢全部的内容,包括:在matlab中如何调用执行外部程序呢、matlab调用C函数,但是C函数中include了其它C函数,怎么办、matlab上的程序在C语言 上能运行吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9329890.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存