如何将Matlab6.5函数转换成VC++6.0函数.doc

上传人:cl****1 文档编号:551751927 上传时间:2023-12-29 格式:DOC 页数:10 大小:237.01KB
返回 下载 相关 举报
如何将Matlab6.5函数转换成VC++6.0函数.doc_第1页
第1页 / 共10页
如何将Matlab6.5函数转换成VC++6.0函数.doc_第2页
第2页 / 共10页
如何将Matlab6.5函数转换成VC++6.0函数.doc_第3页
第3页 / 共10页
如何将Matlab6.5函数转换成VC++6.0函数.doc_第4页
第4页 / 共10页
如何将Matlab6.5函数转换成VC++6.0函数.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《如何将Matlab6.5函数转换成VC++6.0函数.doc》由会员分享,可在线阅读,更多相关《如何将Matlab6.5函数转换成VC++6.0函数.doc(10页珍藏版)》请在金锄头文库上搜索。

1、如何将Matlab6.5函数转换成VC+6.0函数1、编写Matlab函数函数文件sum_prod.m,内容如下:function sum,prod = sum_prod(p1,p2)sum = p1+p2; % p1与p2的和 prod = p1.*p2; % p1与p2的点乘该函数完成的是矩阵的求和与点乘的功能,下面将介绍把该代码转换成C+环境可用的代码的方法。2、Matlab6.5编译器设置(1) 在同一台电脑上安装Matlab6.5和Visual C+6.0;(2) mex命令设置(a)运行Matlab,在Matlab的命令窗口(Command Window)键入“mex -setup

2、”命令后,按回车键,安装Matlab编译器;(b) 命令窗口出现如下提示:Please choose your compiler for building external interface (MEX) files: Would you like mex to locate installed compilers y/n?此时键入”y”,按回车;(c) 命令窗口出现如下提示:Please choose your compiler for building external interface (MEX) files: Would you like mex to locate installe

3、d compilers y/n? ySelect a compiler: 1 Digital Visual Fortran version 6.0 in C:Program FilesMicrosoft Visual Studio 2 Lcc C version 2.4 in C:MATLAB6P5syslcc 3 Microsoft Visual C/C+ version 6.0 in C:Program FilesMicrosoft Visual Studio 0 None此时键入”3”,按回车;选择Microsoft Visual C+6.0的编译器(d) 命令窗口出现如下提示:Plea

4、se verify your choices: Compiler: Microsoft Visual C/C+ 6.0 Location: C:Program FilesMicrosoft Visual Studio Are these correct?(y/n):此时键入”y”,按回车;确认选择Microsoft Visual C+6.0的编译器(3) mbuild命令设置(a) 运行Matlab,在Matlab的命令窗口(Command Window)键入“mbuild -setup”命令后,按回车键,安装Matlab编译器;(b) 命令窗口出现如下提示:Please choose you

5、r compiler for building standalone MATLAB applications: Would you like mbuild to locate installed compilers y/n?此时键入”y”,按回车;(c) 命令窗口出现如下提示:1 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in C:Program FilesMicrosoft Visual Studio 0 None此时键入”2”,按回车;选择Microsoft Visual C+6.0

6、的编译器(d) 命令窗口出现如下提示:Please verify your choices: Compiler: Microsoft Visual C/C+ 6.0 Location: C:Program FilesMicrosoft Visual StudioAre these correct?(y/n):此时键入”y”,按回车;确认选择Microsoft Visual C+6.0的编译器(4) 在Matlab的命令窗口(Command Window)键入“cd(prefdir); mccsavepath prefdir;”启动MATLAB add-in工具条3、建立C+控制台工程(1) 新

7、建一个C+控制台工程Test其它都采用默认设置。然后在该工程中添加Test.cpp文件4、启用Matlab Add-in 工具条(1) 在上面的VC工程中,在菜单栏的空白处右键单击鼠标,出现如下菜单点击Coustomize菜单项,出现如下Coustomize对话框,选择Add-in and Macro Files标签,选中MATLAB Add-in选项,点Close按钮关闭对话框,这里会在菜单附近出现如下工具条,它就是Matlab Add-in 工具条。5、VC+6.0环境及工程设置在上面的VC工程中,进行以下设置(1) VC+6.0环境设置单击菜单Tools,出现如下菜单单击Options菜

8、单项,出现Options对话框,选择Directories标签,在include files里面加入: C:MATLAB6P5EXTERNINCLUDE C:MATLAB6P5EXTERNINCLUDECPP如下图所示在Library files里面加入: C:MATLAB6P5EXTERNLIB C:MATLAB6P5EXTERNLIBWIN32 C:MATLAB6P5EXTERNLIBWIN32MICROSOFTMSVC60 如下图所示(2) VC+6.0工程设置单击菜单Project,出现如下菜单单击Setting菜单项,出现Project Setting对话框,选择Link标签,在 O

9、bject/library modules: 下面的文本框内容的后面加入libmmfile.lib libmatlb.lib libmx.lib libmat.lib libmatpm.lib sgl.lib libmwsglm.lib libmwservices.lib,如下图所示选择C/C+标签,在 Prerocessor definitions: 下面的文本框内容的后面加入 ,MSVC,IBMPC,MSWIND,如下图所示设置完成。6、Matlab到C+的代码转换在上面的VC工程中(1) 将前面sum_prod.m文件复制到该Test工程所在的目录下(2) 单击Matlab Add-in

10、 工具条最左边第一个按钮,出现如下对话框选中Windows Console EXE 四个选择选中后二项,如上图所示,单击OK,出现如下对话框选中Matlab函数文件sum_prod.m,单击“打开”按钮,这样在该工程所在的目录就生成了sum_prod.cpp和sum_prod.hpp文件。(3) 打开sum_prod.cpp文件,注意到里面有这样一个函数mwArray sum_prod(mwArray * prod, mwArray p1, mwArray p2) 可以看到在C+环境中,sum_prod也是一个函数,它的输入与输出数据类型是mwArray,它是VC6.0专门为Matlab中的矩

11、阵对象定义的一个类。函数sum_prod有三个输入参数和一个输出参数。由于C+函数不能有一个以上的返回值,因此这里将Matlab函数sum_prod的第二个返回值,以地址型变量的形式作为C+函数sum_prod的第一个输入参数。7、C+函数的使用在上面VC工程Test.cpp文件中键入以下代码:/*#include matlab.hpp/ 包含类mwArray定义#include sum_prod.hpp/ 包含C+函数sum_prodvoid main()int i,j;/ 定义C+二维数组double x = 1,2,3,4,5,6;double y = 7,8,9,10,11,12;do

12、uble *sum,*prod;/ 初始化与C+数组相对应的mwArray变量mwArray X(2,3,x);mwArray Y(2,3,y);mwArray SUM,PROD;/ 调用C+函数SUM = sum_prod(&PROD,X,Y);/ 给输出数据分配内存sum =(double*) calloc(6,sizeof(double);prod =(double*) calloc(6,sizeof(double);/ 取出输出数据sum = mxGetPr(SUM.GetData();prod = mxGetPr(PROD.GetData();/ 输出显示cout SUM = end

13、l;for (i=0;i2;i+)for (j=0;j3;j+)cout sumj*2+i t;cout endl;cout PROD = endl;for (i=0;i2;i+)for (j=0;j3;j+)cout prodj*2+i t;cout endl;/ 释放内存free(sum);free(prod);/*编译链接程序,“忽略”编译过程中有关库文件msvcrt.lib的警告。该C+程序运算结果如下图所示特别说明一:在CC+环境中二维数组是“行向量”,如果将下面定义的变量x看成二维数组的话double x = 1,2,3,4,5,6;那么x应该是的矩阵,即x = 1,2,3;4,5

14、,6;但是,如果将数组首地址x初始化mwArray类时,数组x在mwArray中是按“列向量”的形式排列的,即X = 1,3,5;2,4,6;同理,这里Y = 7,9,11;8,10,12;因此才能得到上图的结果特别说明二:通过Matlab Add-in实现Matlab与VC+的混合编程也有不足,并不是所有的Matlab的函数都能转成C+函数,这一点在使用过程中要特别注意!8、程序的发布(1) 使用 VC 附带的 Depends 工具找到应用程序所需要的 dll 文件,手动复制这些文件添加到应用程序所在的目录即可。(2) 编译好的程序只要附带 mglarchive.exe (在 C:MATLAB6p5externlibwin32 目录) 中的数学和图形库即可在没装 matlab

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号