logo资料库

VS 2010调用matlab 2010.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
手把手教你学VS 2010调用MATLAB函数 VS 2010 调用 matlab 2010 自定义函数 最近在网上查找相关 VS2010 调用 matlab2010 的函数,实在是太少了。在此抛砖引玉了,把 自己的学习过程和大家分享一下吧。 这里使用的方法是先将 matlab 的 xx.m 文件编译为动态库,然后在 VS 中以静态的方式链接到 动态库文件(当让,动态估计也是可以的,可以试下哦!)。假设你的机子已经安装了 VS2010 和 matlab2010,并且之前没有做过任何设置。下边讲一下从头到尾的操作过程吧: 1. 配置 matlab 编译环境 a) 设置环境变量。 编译.m 文件需要使用 VC 编译器,使用编译器前需要先在 matlab 中对其进行设置。在我的电 脑图标上点击右键-系统属性,弹出如下对话框: 点击“环境变量”按钮,出现下页的对话框。点击系统变量下得新建按钮,弹出“编辑系统变 量对话框”,假设 VS 装在 D 盘,变量名随便取一个,变量值设置为“D:\Program Files\Microsoft Visual
手把手教你学VS 2010调用MATLAB函数 Studio 10.0\VC\bin”(以实际的编译器位置为准哦!)。完成后点击确定。 b) 选择 VC 编译器 打开 matlab。在命令行中输入“mbuild –setup”,输入过程如下,需要输入的选项已经用蓝色 标出了: >> mbuild -setup Please choose your compiler for building standalone MATLAB applications: Would you like mbuild to locate installed compilers [y]/n? n Select a compiler: [1] Lcc-win32 C 2.4.1 [2] Microsoft Visual C++ 6.0 [3] Microsoft Visual C++ 2005 SP1 [4] Microsoft Visual C++ 2008 Express [5] Microsoft Visual C++ 2008 SP1 [0] None Compiler: 5 The default location for Microsoft Visual C++ 2008 SP1 compilers is C:\Program
手把手教你学VS 2010调用MATLAB函数 Files\Microsoft Visual Studio 9.0, but that directory does not exist on this machine. Use C:\Program Files\Microsoft Visual Studio 9.0 anyway [y]/n? n Please enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio 9.0] D:\Program Files\Microsoft Visual Studio 10.0\VC\bin 2. .m 文件编译示例 准备好.m 源文件,文件名“add.m”如下,没来得急改名字,其实实现的是画正弦曲线的功能。 % file name: add.m function add(x) % UNTITLED Summary of this function goes here % Detailed explanation goes here t=0:0.001:x; y=sin(2*pi*50*t); plot(t,y); end 在 matlab 命令行中输入 deploytool 命令,弹出对话框,填写内容如下: 点击 ok 后,出现下面的界面。点击 Add files 将 add.m 添加入工程中。
手把手教你学VS 2010调用MATLAB函数 点击 按钮,然后我们需要的动态库生成了。在任意一个文件上点击右键,选择Locate on Disk, 就可以找到生成的文件了。这几个文件就是需要在 VS 里边用的文件,具体怎么用看下边吧。 3. 配置 VS 的目录选项 建立一个新项目,然后对项目的文件路径进行设置见下。如果不建立新工程,看不到项目属 性菜单项。 A) 在项目属性对话框中填写包含目录见下表。我的 MATLAB 装在 D 盘,所以盘符为 D,记 住需要根据实际安装位置填写。其中第三个目录“D:\我的文档\MATLAB\test\distrib”是编译生成 test.h,test.lib 和 test.dll 的目录。可以将 test.h 和 test.lib 拷贝到 VS 工程目录中,就不需要添加这 个包含目录了。Test.dll 文件是动态库文件,必须拷贝到工程生成 exe 文件的目录。
手把手教你学VS 2010调用MATLAB函数 B)库文件目录设置。这个目录是需要加载库文件的目录也是从 MATLAB 安装目录下边选择的。 因为刚开始搞不清楚都需要哪些,所以加的有点多。更准确的设置,还没搞清楚,大家将就着点吧。 反正现在的设置也是可用的,以后自己研究吧。记住要按照自己机器上安装 matlab 的路径进行设置, 不要搞错了。 4. 动态库调用示例 新建一个工程,工程名:test,建立一个基于对话框的程序。对话框上加一个按钮,取名“plot”。 在 testmtDlg.cpp 文件中加入如下标灰色背景的代码。 #include "stdafx.h" #include "testmt.h" #include "testmtDlg.h" #include "afxdialogex.h" #include "test.h" //#pragma comment(lib,"libmx.lib") //#pragma comment(lib,"libmat.lib") //#pragma comment(lib,"libeng.lib") #pragma comment(lib,"mclmcrrt.lib") #pragma comment(lib,"test.lib") ……………….. BOOL CtestmtDlg::OnInitDialog() {
手把手教你学VS 2010调用MATLAB函数 …………………………….. // TODO: 在此添加额外的初始化代码 testInitialize(); return TRUE; // TODO: 在此添加控件通知处理程序代码 double x = 0.1; mwArray t(0.1); //mwArray t(1,0.1, mxDOUBLE_CLASS); //t = mxCreateDoubleMatrix(1,1,mxREAL); //memcpy(mxGetPr(t),&x,sizeof(double)); add(t); } …………………………….. void CtestmtDlg::OnBnClickedButton1() { //这是添加的按钮的消息处理 } ……………………… void CtestmtDlg::OnDestroy() { } CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 testTerminate(); 编译程序时,出了点小问题,提示 matrix.h 文件中 char16_t 重复定义,并且和另外的一个文件 定义不一致。把 matrix.h 文件修改如下: //typedef CHAR16_T char16_t; 这是修改前的语句 typedef unsigned short char16_t; 再次编译,运行程序如下:
手把手教你学VS 2010调用MATLAB函数 点击“plot”按钮,就绘制出一个正弦曲线。 好了,先讲到这里吧。没来的急检查,先发出来吧!要是还有疑问,请加我的 QQ 群吧: 128229028。记住啊:Work time, no disturbance. 祝大家在学习编程的里程中一帆风顺!
分享到:
收藏