
简单地方法是通过磁盘文件交换数据,先将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语言 上能运行吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)