- 相关推荐
C++如何调用matlab函数
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++如何调用matlab函数?下面就一起来了解看看吧!
C++如何调用matlab函数
本来电脑上安装的是matlab2012b,但是好像2012b只有64位的,故重新安装matlab7,安装完注册一下,cmd cd到matlab7的程序目录bin文件夹下,注册 matlab /regserver,就可以调用matlab了,先测试第一种方法,调用引擎,engOpen、engSetVisible、engClose
engEvalString(m_pEngine, "x1 = 0.01 : 0.01 : 10 * pi");engEvalString(m_pEngine, "x2 = -10 * pi : 0.01 : -0.01");engEvalString(m_pEngine, "y1 = sin(x1)./x1");
engEvalString(m_pEngine, "y2 = sin(x2)./x2");
engEvalString(m_pEngine, "plot([x2 x1], [y2 y1])");
在台式机上可以运行,但是到了笔记本上engOpen返回false,经过研究发现有可能是管理员权限的问题,
项目右键-属性-链接器-清单文件-uac执行级别选择requireAdministrator,重新编译运行果然正确了,先记录下来。
C/C++调用Matlab
在工程实践中,C/C++调用Matlab 的方法主要有调用Matlab 计算引擎、包含m 文件转换的C/C++文件,以及调用m文件生成的DLL 文件。
在调用Mallab方法、代码或DLL之前,先设置matlab的编译器。
(1)在命令行窗口下,输入并执行如下命令:mex –setup
(2)输入命令:mbuild –setup ,选择相应的VS编译器。
1 利用Matlab计算引擎
Matlab的引擎库为用户提供了一些接口函数,利用这些接口函数,用户在自己的程序中以计算引擎方式调用Matlab 文件。该方法采用客户机/服务器的方式,利用Matlab 引擎 将Matlab 和C/C++联系起来。在实际应用中,C/C++程序为客户机,Matlab 作为本地服务器。
C/C++程序向Matlab 计算引擎传递命令和数据信息,并从Matlab 计算引擎接收数据信息。
Matlab提供了以下几个C语言计算引擎访问函数供用户使用:engOpen,engClose,engGetVariable,engPutVariable,engEvalString,engOutputBuffer,engOpenSingleUse, engGetVisible,engSetVisible。
头文件#include "engine.h"这个文件在 %MATLAB_PATH%externinclude里,我们在VC++目录包含过了。否则,就会提示 cannot find engine.h file之类的错误。然后,我们需要引用几个函数调用依赖库(lib) libeng.lib libmx.lib libmat.lib。
在Matlab 下运行example2.exe: mex -f example2.c。
利用计算引擎调用Matlab的特点是:节省大量的系统资源,应用程序整体性能较好,但不能脱离Matlab的环境运行,且运行速度较慢,但在一些特别的应用时可考虑使用。
2 利用mcc编译器生成的cpp 和hpp 文件
Matlab自带的C++ Complier--mcc,能将m文件转换为C/C++代码。因此,它为C/C++程序调用m文件提供了另一种便捷的方法。下面举例说明相应步骤:
a.新建example3.m,保存后在命令窗口中输入:mcc -t -L Cpp -hexample3.
则在工作目录下生成example3.cpp 和example3.hpp 两个文件。
b.在VC中新建一个基于对话框的MFC应用程序Test2,添加一个按钮,并添加按钮响应函数,函数内容见f 步。将上面生成的两个文件拷贝到VC 工程的Test2 目录下。
c.在VC中选择:工程->设置,选择属性表Link 选项,下拉菜单中选择Input,在对象 / 库模块中加入libmmfile.liblibmatlb.lib libmx.lib libmat.lib libmatpm.lib sgl.lib libmwsglm.liblibmwservices.lib , 注意用空格分开; 而在忽略库中加入 msvcrt.lib;
d.选择属性表C/C++选项,下拉菜单选General,在预处理程序定义中保留原来有的内容,并添加MSVC,IBMPC,MSWIND,并用逗号隔开。选择下拉菜单的PrecompiledHeaders选项,在“自动使用预补偿页眉”中添加stdafx.h,然后确定。
e.选择:工具-> 选项, 属性页选择“ 目录” ,在include files 加入:C:MATLAB6p5p1externinclude ,C:MATLAB6p5p1externincludecpp ; 然后在 Library files 里面加入: C:MATLAB6p5p1inwin32 ,C:MATLAB6p5p1extern libwin32microsoftmsvc60;注意根据用户的Matlab 安装位置,修改相应目录。
【C++如何调用matlab函数】相关文章:
C++调用C函数的方法11-15
C语言函数调用与参数传递10-10
在子类中应该如何调用父类的构造方法04-13
excel中rank函数如何使用03-15
系统调用的概念简介08-12
Java与C/C++的区别02-24
C语言和C++的区别精选03-01
C语言和C++的区别03-09
C++勾股数公式讲解01-20
C++中时间与时间戳的转换04-21