哪位大侠知道vc和matlab混合编程 , 如何有MATLAB来调用vs2010进行混合编程

您所在的位置:网站首页 佳能客服电话24小时人工服务打印机 哪位大侠知道vc和matlab混合编程 , 如何有MATLAB来调用vs2010进行混合编程

哪位大侠知道vc和matlab混合编程 , 如何有MATLAB来调用vs2010进行混合编程

2024-07-11 17:38| 来源: 网络整理| 查看: 265

本篇文章给大家谈谈 哪位大侠知道vc和matlab混合编程 ,以及 如何有MATLAB来调用vs2010进行混合编程 对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

创建与图象大小相对应的网格 [x,y] = meshgrid(1:w,1:h);z = x - y + y - x;i = 1;j = 1;用图象灰度值填充高度值 while (i - 1) * w + j

二、VC6.0中调用生成的dll文件 上面生成的dll文件,我们可以借助VC6.0的Depends工具查看导出函数名,但是我们要调用导出函数必须要知道函数的形参返回类型等,这里要借助.h文件,它包含了导出函数的声明,下面以实例来讲解使用

要在VC中成功编译Matlab引擎程序,必须包含引擎头文件engine.h并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib。具体的说,打开一个工程后,做如下设置(以VC6为例): 1) 通过菜单工程/选项,打开设置属性页,进入Directories页面

在工程实践中,用户经常遇到Matlab 与C/C++混合编程的问题。本文基于Matlab 6.5和VC6.0 开发环境,在Windows 平台下就它们之间的混合编程问题进行深入研究并举例说明。2 Matlab 调用C/C++ Matlab 调用C/C++的方式主要有两种

Mediva软件平台本身的功能相当强大,提供近千个Matlab的基本功能函数,通过必要的设置,就可以直接实现与C++的混合编程,而不必再依赖Matlab;同时,Mediva还提供编译转换功能,能够将Matlab函数或编写的Matlab程序转换为C++形式的D

哪位大侠知道vc和matlab混合编程

一、使用matlab将.m转成dll文件 1、在命令行中输入mex -setup 提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in

1、新建一个win32控制台应用程序(也可以是MFC,都行),把代码拷过来 2、添加库路径和头文件路径 路径分别是:D:\Program Files\MATLAB\R2010b\extern\include D:\Program Files\MATLAB\R2010b\extern\lib\win64\

1. 首先在R盘根目录下创建"DLL"文件夹,然后把spline.m和chckxy.m两个文件拷贝到"R:\DLL"文件夹下(在我的机器上,spline.m位于文件夹"C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\"下,chckxy.m位于文

1、 配置matlab环境 a) 在comand里输入mex –setup等命令,显示如下:(椭圆标记的即为手动输入的) b)在comand里输入mbuild –setup等命令,显示如下:(椭圆标记的即为手动输入的) 2、 生成dll文件 a)在D:\

1、 配置matlab环境 a) 在comand里输入mex –setup等命令,显示如下:(椭圆标记的即为手动输入的)b)在comand里输入mbuild –setup等命令,显示如下:(椭圆标记的即为手动输入的)2、 生成dll文件 a)在D:\administrator

如何用vs2010调用matlab

那是VS2005调用Matlab7。MATLAB7.3(r2006)以上提供了MATLAB Builder for .NET,用图形界面的deploytool代替了命令行mcc。在vs对应的是类mwarray。更详细的内容请查帮助文档。

在Matlab中运行mbuild -setup,选择64位的编译器。这个要配合vs2010的安装进行,vs2010中需要有64的编译器。首先,写一个很简单的加法函数:function [c] =Add(a, b);c = a + b;保存为Add.m 然后进行编译,命令

1、在命令行中输入mex -setup 提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in E:\Program Files\Microsoft Visua

1、安装补丁VS2010MEXSupport.zip 由于MATLAB R2010a 发布的时间要比 VS2010早,所以在该版本识别不了VC++2010编译器。不过R2010a之后的版本应该不会有这种问题了。解压补丁包,将其中的文件放到 D:Program FilesMATLABR201

可以的, matlabr2013a比vs2010发布的完,完全可以用的。

VS2010能与哪个版本的matlab进行混编

(VS2010:VC++目录在项目-属性-配置属性里)(4)将生成的.lib .dll .h文件拷贝到MFC工程源文件目录,并将.h文件添加进解决方案 在源代码里添加:#include "libhFig.h"对MCR及生成的库进行初始化 在CMyView::OnInit

首先matlab要安装64位的,一般在64位系统下默认安装64位。在Matlab中运行mbuild -setup,选择64位的编译器。这个要配合vs2010的安装进行,vs2010中需要有64的编译器。首先,写一个很简单的加法函数:function [c] =Add(a,

1、 配置matlab环境 a) 在comand里输入mex –setup等命令,显示如下:(椭圆标记的即为手动输入的) b)在comand里输入mbuild –setup等命令,显示如下:(椭圆标记的即为手动输入的) 2、 生成dll文件 a)在D:\

1. 首先在R盘根目录下创建"DLL"文件夹,然后把spline.m和chckxy.m两个文件拷贝到"R:\DLL"文件夹下(在我的机器上,spline.m位于文件夹"C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\"下,chckxy.m位于文

如何vs2010mfc调用matlab 2010生成dll进行编程

首先matlab要安装64位的,一般在64位系统下默认安装64位。在Matlab中运行mbuild -setup,选择64位的编译器。这个要配合vs2010的安装进行,vs2010中需要有64的编译器。首先,写一个很简单的加法函数:function [c] =Add(a,

1、在命令行中输入mex -setup 提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in E:\Program Files\Microsoft Visua

1、安装补丁VS2010MEXSupport.zip 由于MATLAB R2010a 发布的时间要比 VS2010早,所以在该版本识别不了VC++2010编译器。不过R2010a之后的版本应该不会有这种问题了。解压补丁包,将其中的文件放到 D:Program FilesMATLABR201

Matlab调用C语言是通过写Mex文件,具体你查阅下Mex文件怎么写。编译Mex文件是通过C编译器,而不会去调用整个VS2010 IDE。

如何有MATLAB来调用vs2010进行混合编程

通常在实现图像处理的算法时我们使用Matlab编程,因为它具有丰富的库函数以及操作方便,然而在工程项目中通常使用C/C++语言。如果我们将matlab代码完全重写成C++代码会很麻烦,最好的办法是借助matlab与C/C++接口将.m程序转成dll

以工程应用为背景,详细讲解如何使用MATLAB和C/C 语言进行混合编程。《MATLAB7.x应用系列丛书》从读者角度出发,以实用、易懂为特点,贴近读者的实际学习过程,充分满足读者的学习需求。《MATLAB7.x应用系列丛书》语言简洁,

那是VS2005调用Matlab7。MATLAB7.3(r2006)以上提供了MATLAB Builder for .NET,用图形界面的deploytool代替了命令行mcc。在vs对应的是类mwarray。更详细的内容请查帮助文档。

1) 通过菜单工程/选项,打开设置属性页,进入Directories页面,在目录下拉列表框中选择Include files,添加路径:"C:\matlab\extern\include"(假定matlab安装在C:\matlab目录)。2) 选择Library files,添加路径:C:\matlab\e

matlab与vs2010混合编程时,mwArray不能初始化,怎么办 帮助读者较快地将MATLAB与C/C 混合编程的知识应用于实际工作中。 内容由汪入深 以工程应用为背景,详细讲解如何使用MATLAB和C/C 语言进行混合编程。 《MATLAB7.x应用系列丛书》从读者角度出发,以实用、易懂为特点,贴近读者的实际学习过程,充分满足读者的学习需求。 《MATLAB7.x应用系列丛书》语言简洁,叙述清晰,图文并茂,实例丰富,是广大读者学习MATLAB的理想选择。1. VC调用Matlab Engine的方式: Matlab Engine是一组Matlab提供的接口函数,支持C/C++语言,Matlab Engine采用C/S(客户机/服务器)模式,Matlab作为后台服务器,而C/C++程序作为前台客户机,向Matlab Engine传递执行命令和数据信息,从Matlab Engine接收执行结果。用户可以在前台应用程序中调用这些接口函数,实现对Matlab Engine的控制。采用这种方法几乎能利用Matlab全部功能,但是需要在机器上安装Matlab软件,缺点是执行效率较低。下面简单介绍下这种方式的实现步骤: 1.1 API接口介绍 先来介绍一组Matlab提供的引擎API接口:(仅作简单功能介绍,详细参数说明请参考Matlab帮助) Engine* engOpen(const char* startcmd)启动Matlab引擎 int engClose(Engine* ep) 关闭Matlab引擎 int engEvalString(Engine* ep, const char* string)执行Matlab表达式 mxArray* engGetArray(Engine* ep, const char* name)获取一个变量数组的值 int engPutArray(engine* ep, const mxArray* mp)设置一个变量数组的值 int engPutVariable(Engine *ep, const char *name, const mxArray *pm)同上 mxArray *engGetVariable(Engine *ep, const char *name)获取一个变量 int engOutputBuffer(Engine* eP,char* p,int n)获取输出字符串 1.2 VC环境配置 要想在VC集成环境下调用Matlab引擎实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:(以下以Matlab2008a和VS2005版本为例) (1)添加include路径:将“\extern\include”(在Matlab的安装路径下)路劲添加到VC编译器的include下 (2)添加lib路径:将“\extern \lib\win32\microsoft” (在Matlab的安装路径下) 路径添加到VC编译器的lib下 (3)加载lib:需要加载至少libmx.lib、libmat.lib、libeng.lib三个库 (4)include头文件:在要使用 engine 函数的地方包含engine.h头文件 1.3 引擎调用 接下来就可以在VC中调用Matlab引擎了,简单的示例代码如下: #include "engine.h" #pragma comment(lib, "libeng.lib") #pragma comment(lib, "libmx.lib") #pragma comment(lib, "libmat.lib") void TestDeno() { Engine* pEng = NULL; if (!(pEng = engOpen(NULL))) { printf("Open matlab enging fail!"); return; } //call Engine plot A*sin(t)+B A=2 B=1 mxArray *A = NULL; double init = 2; A = mxCreateDoubleMatrix(1, 1, mxREAL); memcpy((void*) mxGetPr(A), (void*)&init, sizeof (double)); engPutVariable(pEng, "A", A); init = 1; memcpy((void*) mxGetPr(A), (void*)&init, sizeof (double)); engPutVariable(pEng, "B", A); mxDestroyArray(A); Sleep(3*60*1000); engEvalString(pEng, "t=0:0.2:7;plot(t,A*sin(t)+B);"); if(NULL != pEng) { engClose(pEng); } } 示例代码通过VC调用Matlab引擎,绘制正弦曲线,相对简单,就不再详细解释,效图如下: 2. VC调用Matlab DLL的方式 DLL是一个可执行的二进制文件。把很多通用的功能放在DLL中,可以供各种应用程序调用,这样可以很好的减少外部存储空间的占有量,并实现代码的共享。Matlab也支持将m程序编译成dll,供其他语言(包括VC、VB、Fortran等)调用,下面先简单介绍下Matlab DLL的编译步骤: 2.1 Matlab DLL制作 (1)配置Matlab的编译器跟,要将mex和mbuil两个都配置成本机上安装的VC,mbuild的配置方法同mex (2)编译m函数成为dll,在matlab命令空间中使用mcc命令编译m文件:(mcc的使用参考Matlab帮助) 示例:将一个Matlab函数MyFun 编译成libMyFun 的命令: mcc –W cpplib:libMyFun –T link:lib MyFun 参数说明:-W控制编译之后的封装格式,cpplib表示c++的lib,冒号之后是编译输出lib名,-T表示目标,link:lib表示连接到lib的目标,MyFun是待编译的m文件名,编译成功之后,会输出三个文件:libMyFun.lib libMyFun.dll libMyFun.h 2.2 DLL在VC中调用 要想在VC集成环境下调用Matlab的DLL,实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:(以下以Matlab2008a和VS2005版本为例) (1)VC环境配置,同前面VC调用Matlab引擎方式类似,也需要配置VC的编译环境,其中include路径、lib路径和前一种方式相同,加载的lib变更为:mclmcrrt.lib、libmx.lib、libmat.lib、mclmcr.lib四个,include的头文件变更为:mclmcr.h、matrix.h、mclcppclass.h三个。 (2)DLL中函数的调用,先看一下m函数编译成C++Dll之后的函数声明,例:matlab函数:function [y, out] = CaculateFun(x, in)编译之后对应c++的声明:void MW_CALL_CONVCaculateFun(int nargout, mwArray& y, mwArray& out, const mwArray& x, const mwArray& in)参数int nargout指定调用时,输出参数的个数,紧跟的后续nargout个参数y、out为输出参数,后续再剩下的多个参数x、in就为输入参数。 (3)注意事项:在VC中调用dll中的函数之前,需要先调用函数libFunInitialize初始化,在调用完函数以后,需要再调用函数libFunTerminate和mclTerminateApplication终止。 准备好了上述步骤,就可以在VC中调用DLL中函数的了,简单的示例代码如下: // include matlab sys head file #include "mclmcr.h" #include "matrix.h" #include "mclcppclass.h" // include lib head file #include "libCaculateFun.h" // link matlab sys lib #pragma comment(lib, "mclmcrrt.lib") #pragma comment(lib, "libmx.lib") #pragma comment(lib, "libmat.lib") #pragma comment(lib, "mclmcr.lib") // link lib #pragma comment(lib, "libCaculateFun.lib") void TestDeno() { // init lib if (!(libCaculateFunInitialize())) { std::cout首先matlab要安装64位的,一般在64位系统下默认安装64位。 在Matlab中运行mbuild -setup,选择64位的编译器。这个要配合vs2010的安装进行,vs2010中需要有64的编译器。 首先,写一个很简单的加法函数: function [c] =Add(a, b); c = a + b; 保存为Add.m 然后进行编译,命令如下: mcc -W cpplib:libAdd -T link:lib Add 其中,mcc是matlab提供的编译命令,此命令的帮助说明如下: -W lib:string link:lib -W是控制编译之后的封装格式,cpplib,是指编译成C++的lib,cpplib后面是指编译的库的名字,-T表示目标,link:lib表示要连接到一个库文件的目标,目标的名字是后面的Add,即自定义m函数的名字。 运行完之后,你的目录下面,将会出现一些文件: libAdd.cpp libAdd.lib libAdd.dll libAdd.h等 libAdd.dll是编译好的动态库,Add这个函数封装在里面,libAdd.h是对应的头文件,在C里面调用这个函数的时候,需要include这个头文件,在这个头文件的最后,你可以看到下面的内容: externLIB_libAdd_CPP_API void MW_CALL_CONV Add(int nargout, mwArray& c , const mwArray&a , constmwArray& b); 这就是Add的C函数的声明。 nargout表示输出变量的个数 a,b,c就是对应了m函数的几个变量 注意,a,b,c三个变量的类型是mwArray,这是matlab提供的一个特殊的变量类型(在7.0的版本,编译之后,变量类型是mxArray)。通常在实现图像处理的算法时我们使用Matlab编程,因为它具有丰富的库函数以及操作方便,然而在工程项目中通常使用C/C++语言。如果我们将matlab代码完全重写成C++代码会很麻烦,最好的办法是借助matlab与C/C++接口将.m程序转成dll文件! 一、使用matlab将.m转成dll文件 1、在命令行中输入mex -setup 提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in E:\Program Files\Microsoft Visual Studio”,根据自己实际情况选择。 2、在命令行中输入mbuild -setup 这里的选项和上面类似,依次选择环境确定。 3、生成dll文件 一句命令mcc -W cpplib:add -T link:lib add.m 前面的add表示生成的dll文件名,后面的add.m顾名思义是.m文件名。生成后会多出8个文件,有用的是add.ctfadd.dll add.lib add.h4个文件,据说新版的Matlab不会生成.ctf文件。 二、VC6.0中调用生成的dll文件 上面生成的dll文件,我们可以借助VC6.0的Depends工具查看导出函数名,但是我们要调用导出函数必须要知道函数的形参返回类型等,这里要借助.h文件,它包含了导出函数的声明,下面以实例来讲解使用方法: 1、add.m文件 function [a,b]=add(x,y) a=2*x+y; b=3*y; end 注意了add函数有两个返回值,可以猜测一下在C++中是如何处理的; 2、add.h文件 截取其中一段关键代码如下: extern void add(int nargout, mwArray& a, mwArray& b , const mwArray& x, const mwArray& y); 实际上函数的返回是变相的放到形参中的,依次是输出参数个数,输出参数,输入参数。PS 现在做的这个项目中用户自定义算法dll使用的规则和这里类似! 3、C++中调用dll文件 (1)新建空工程,将上面提及的4个文件放到工程目录下; (2)VC++目录中包含目录:matlab 内的include目录 比如我的是 E:\MATLAB7\extern\include (3)VC++目录中库目录:matlab 内的lib目录 E:\MATLAB7\extern\lib\win32\microsoft\msvc60,要根据VC++版本修改! (4)工程属性-》连接-》输入-》附加依赖项 输入:add.lib mclmcrrt.lib mclmcr.lib,第一个是生成的。或者在预处理中加入下面代码 #pragma comment(lib, "mclmcrrt.lib") #pragma comment(lib, "mclmcr.lib") #pragma comment(lib, "add.lib") 4、C++代码 #include #include "add.h" using namespace std; int main() { if(!addInitialize()) { cout没有必要啊,学会使用matlab的基本语法功能就够了,各个版本差别不太大,参加数学建模是够用了的,2011的代码在2015上一定也是可以实现的,参加数学建模,了解一些常用的算法,知道这些算法在matlab上如何实现,试着自己去写一些简单的代码,就...现在正值 32 位系统向 64 位系统转换时期,软件兼容性问题比较严重,建议最好选择同时代的产品以相互匹配,防止出现兼容性问题。整个过程如下: 1. 首先在R盘根目录下创建"DLL"文件夹,然后把spline.m和chckxy.m两个文件拷贝到"R:\DLL"文件夹下(在我的机器上,spline.m位于文件夹"C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\"下,chckxy.m位于文件夹"C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\private\"下)。 2. 在MATLAB中打开"R:\DLL\spline.m",修改第54行代码,把"chckxy"改为"mycheck",如图: 3. 把"R:\chckxy.m"重命名为mycheck.m,如图: 4. 在MATLAB中打开"R:\DLL\mycheck.m",修改第1行代码,把函数名由"chckxy"改为"mycheck",如图: 5. 在MATLAB命令窗口下输入mcc指令编译spline.m,即: 1 >> cd R:\DLL 2 >> mcc -W cpplib:libspline -T link:lib spline.m1、 配置matlab环境 a) 在comand里输入mex –setup等命令,显示如下:(椭圆标记的即为手动输入的) b)在comand里输入mbuild –setup等命令,显示如下:(椭圆标记的即为手动输入的) 2、 生成dll文件 a)在D:\administrator\Documents\MATLAB创建my.m文件,具体代码如下: b)在matlab的command行输入mcc -t -L C -W lib:ppp -T link:lib my.m,显示结果如下: 之后在D:\administrator\Documents\MATLAB下生成下列文件:

关于 哪位大侠知道vc和matlab混合编程 和 如何有MATLAB来调用vs2010进行混合编程 的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3