在C++中调用Matlab.doc_第1页
在C++中调用Matlab.doc_第2页
在C++中调用Matlab.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在c,c+中调用Matlab 在c,c+中调用Matlab在C、C中调用MatlabMatlab是美国MathWorks公司的产品,是一种以矩阵为基本编程单位的高效数值计算语言。Matlab集科学计算、图像处理、声音处理于一体,为用户提供了丰富的Windows图形界面设计方法,使用户能够在利用其强大数值计算功能的同时设计出友好的图形界面。Matlab已经被证明是在应用数学、物理、工程学和其它涉及复杂数值计算等应用领域中解决问题的优秀工具。Matlab能够在Win95/98、Win2000、Linux和Unix等多种操作系统平台上运行。C、C是众多程序员十分喜爱的高级程序设计语言,但其在数值处理分析和算法工具等方面,效率远远低于Matlab语言;在准确方便地绘制数据图形方面,Matlab语言具有C和C无法比拟的优势。但Matlab作为一种以解释方式运行的计算机语言,其程序的执行效率较低,而且不能实现端口操作和实时控制。因此,若能将两者结合运用,实现优势互补,将获得极大的效益。为此,MathWorks公司提供了Matlab和C、C的接口。通过接口,用户既可在C程序中调用Matlab的函数,也可在Matlab中调用C或C程序,从而实现Matlab和C、C的混合编程。本文主要讨论如何在C、C中调用Matlab。一、过程分析在C、C中调用Matlab的主要过程如下所示:1)首先调用engOpen函数打开一个Matlab工程。2)生成mxArray。在Matlab中,所有变量类型,如标量、向量、矩阵、字符串、细胞矩阵和结构,都以mxArrays形式来保存,固数据操作都必须通过这些mxArrays来完成。生成mxArray有两种不同的方式。一是用mxCreate函数来创建矩阵,之后用mxSetName函数对它进行命名。另一种方式是选择将一个自定义的数据结构复制到mxArray中,值得注意的是Matlab在存储矩阵时是按列序保存的,而在C、C中是按行序保存的,所以转换时注意分清下标。3)调用engPutArray函数将矩阵放入到Matlab工作区中。4)通过engEvalString函数向Matlab传递命令,如果成功,函数返回值为此0,否则返回一个非0值。5)将Matlab中的运行结果回传给C、C二、程序实现我们通过一个简单的程序demo.c来说明C、C+对Matlab的调用。#include#include#include#include/*在头文件中加入engine.h。其包含了调用的Matlab函数声明。*/#includeengine.hintPASCALWinMain(HANDLEhInstance,HANDLEhPrevInstance,LPSTRlpszCmdLine,intnCmdShow)Engine*ep;/定义Matlab引擎mxArray*a_ptr=NULL;charbuffer300;/定义数据缓冲区double*wu;inti,j;/*创建一个新矩阵*/a_ptr=mxCreateDoubleMatrix(10,10,mxREAL);mxSetName(a_ptr,wu);wu=mxGetPr(a_ptr);for(i=0;i10;i+)for(j=0;jimplib文件名.lib文件名.def将获得_libmx.lib、_libmat.lib、_libeng.lib等新文件。再将这3个新文件拷贝到目录matlabexternlib中即可。2)在BCB中新建一工程,在其中加入文件demo.c3)打开Project|Option.对话框,点击Directories/Conditionals。在IncludePath中,加入目录路径externinclude,该路径包含了engine.h和matlab.h等有用的头文件。在LibraryPath中,加入bin和externlib。这两个目录路径包含了外部调用的LIB文件。4)点选Project|AddtoProject.对话框,加入如下库文件:_libeng.lib,_libmat.lib和_libmx.lib。完成以上配置后,即可编译运行。程序执行结果如下图所示。最后,需要说明的是,使用这种方法调用Matlab不能脱离Matlab环境的支撑。另一种方法则是完全脱离Matlab环境,通过动态连接库方式实现对Matlab工具箱函数的调用,这可以通过Mathtools公司的开发平台Mediva来实现。Mediva软件功能相当强大,提供近千个Matlab的基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论