(完整版)matlab课程学习总结.docx

上传人:太** 文档编号:36153450 上传时间:2022-08-25 格式:DOCX 页数:14 大小:746.74KB
返回 下载 相关 举报
(完整版)matlab课程学习总结.docx_第1页
第1页 / 共14页
(完整版)matlab课程学习总结.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《(完整版)matlab课程学习总结.docx》由会员分享,可在线阅读,更多相关《(完整版)matlab课程学习总结.docx(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、目录VC+ & Mat lab混合编程的快速实关键词实例分析1、编写 Matlab 函数2、Matlab6. 5编译器设置L .3、建立C+控制台漉4、启用 Mat lab Add-in 二5、VC+6. 0环境及工程设置6、Mat lab至U C+的代码转换107、C+函数的使用11特别说明一:12特别说明二:8、程序的发布13总结13Project SettingsSettings For:Win32 DebugSample21x1General Debug C/C+t LinkResourcesCategory: GeneralResetOutput file name:iDebug/S

2、ample.dllObject/library modules!at.Iib libmatpm.lib sgl.lib libmwsglm.lib libmwservices.libGenerate debug info Link incrementallyEAnable profilingGenerate debug info Link incrementallyEAnable profilingI Ignore all default librariesI Generate mapfileJ Doesnt produce _L II IProject .Options: libmmlile

3、.lib libmatlb.lib libmx.lib libmat.lib libmatpm.lib sgl.lib libmwsglm.lib libmv/services.lib /nologo /subsystem:windows /dll /incrementakyesOK Cancel选 择C/C+标签,Pierocessor defiiutions: T 的文本框内容 的后面 加 入,MSVC. IBMPC, MSWIND,如卜图 所示设置完成。106、Mat I ab至U C+的代码转换在上面的VC工程中将前面sum_piod. ni文件复制到该Test工程所在的目录下单击Ma

4、tlabAdd-m工具条最左边第一个按钮,出现如卜对话框ATLAB Add-in扁 xiProjecNindws Cisele EXE(Use Kondle GrAphics Libra厂 f: i 7Zp Gs*X C+ Ip D电bug mede脆己丑|选中Windows Console EXE四个选择选中后二项,如上图所示,单击0K.出现如卜对话框chooseto add toP查典范aW : laTest-J DebugDrod. m翻开廷)l文件名如: Isuni prod, m文件类型a): |M.FiiesO.m)选中Matlab函数文fl siim_prod. m.单击翻开按钮

5、,这样在该匚程所在的目录就生成、sum_prod. cpp和 sum_piod. hpp 文件。翻开sum_prod.cpp文件,注意到里面有这样一个函数mwArray siimpiod(mwArray * prod, mwAiiay p 1, mwAriay p2) !-)可以看到在C什环境中,suin_prod也是一个函数,它的输入与输出数据类型是mwAiray,它是VC6. 0专门为 Matlab中的矩阵对象定义的一个类。函数sum_prod有三个输入参数和一个输出参数。由于C+函数不能有一 个以上的返回值,因此这里将Matlab函数siim_prod的第二个返回值,以地址型变量的形式作

6、为C+函数 sum_ptod的第一个输入参数。II7、C+函数的使用在上面VC工程Test, cpp文件中键入以下代码:k1 kk vt*kJ* kJ* k k9k1k1vl* vl* k1* kJ *.t* *1*1* *T*1、T *7 rlrr #1、?、*r rl rr r* *rj、?、rr*rr rl rl?、ttmclude matlab. hpp/ / 包含类 mwArray 定义#includ,sum_piod. hpp,z / 包含 0+函数 sum_piodvoid main()int ij;定义C+二维数组double x = 1, 2. 3, 4, 5. 6);dou

7、ble y = (7, 8, 9, 10. 11, 12);double *sum,*piod;初始化与C+数组相对应的niwAn-ay变房mwArray X(2. 3. x);mwAriay Y (2, 3, y);mwArray SUM. PROD;调用C+函数SUM = simi_prod(&PRODXY);治输出数据分配内存sum (double*) calloc(6, sizeof (double); prod = (double*) calloc(6. sizeof (double);取出输出数据sum = mxGe tPr (SUN1. GetDa laQ);prod = mxG

8、etPr (PROD. GetDataO);输出显不cout SUM = M endl;for (i=0;i2;i+)(for (j=0Jv3 J+)cout sumj*2+i ” t ; cout endl;cout PROD = tr endl;for (i=0;i2;i+)12fol U=OJV3 J+)cout prodj *2+1 t ; cout endl;释放内存 free(sum); free(prod);f*1* 1* 1* *1* *1* *1* *1* *1* ,66,*1*vt*#7*7*7* *Tx *T% xTX*7 7 7% *7% #7*T%俨* *编译链接程序

9、,“忽略”编译过程中有关库文件iimxiLlib的警告。该C什程序运算结果如下列图所示SUM 二习81210141618PROD:二72755164072Pressany Iceyto continuehl特别说明一:在Cc什环境中二维数组是“行向量”,如果将下面定义的变量x看成二维数组的话double x= 1.23.4, 5. 6;那么X应该是2x3的矩阵,即X = 12,3;4. 5. 6;但是,如果将数组首地址X初始化mwArray类时,数组x在mwArray中是按“列向量的形式排列 的,即X = 1,3,5;246;同理,这里Y= 7, 9. 11;8. 10. 12;因此才能得到上

10、图的结果特别说明二:通过Mat lab Add-m实现Mat lab与VC+的混合编程也有缺乏,并不是所有的Mat lab的函数都能转 成C+函数, 这一点在使用过程中要特别注意!138、程序的发布(1)使用VC附带的Depends工具找到应用程序所需要的dll文件,手动复制这些文件添加到应用 程序所在 的目录即可。(2)编译好的程序只要附带mglarcluve. exe (在C:A1ATLAB6P5*externlibwin32目录)中的数学和 图形库即可 在没装matlab的机器上运行总结从以上的讨论中可以清楚的看到,使用Matlab生成动态链接库(*.DLL)实现VC+和Matlab的混

11、编确实以 它的方便,易用成为VC+和Mat lab混编的一种快 速实现方法。另外,Vatlab的Compiler也具有一定的局限 性:原那么上在混编的过 程中只能使用Mat lab数学库中的函数和图形库中的局部函数,mathworks提供的 文 档上面讲到.Matlab的图形库只有在用mcc生成可执行程序(*. exe)时才能引 用。在VC+的程序中直接使用 Matlab图形库中的函数(例如mlfPlot)是不背支持的。另外,在使用mcc生成DLL的时候,Matlab图形库中的 函数也不是金部都测 试过。还有对于一些工具箱中的函数,如果用到一些数学库之外的函数,就有可 能 出现错误。即使编译通

12、过,在运行的时候也有可能出错。但是,随着Matlab的不断升级,mathworks推Hl T Mat lab COM Builder创立COM组件,对这种不兼容性 有了一定的改进,使得Mat lab和高级语言的混合编程变 得越来越实用,越来越简单。参考文献:141Matlab CompilerMatlab COM BuilderVC+ &Matlab混合编程的快速实现摘要:许多工程软件需要用到复杂的数学算法。vc+能够形成各种用户界面,并可以直 接与系统及底层硬件交换数据。因此研究VC+和Mat lab的混合编程具有很大的实 际意义。该文讨论了如何使用Mat lab的Compiler将*. m

13、函数编译为动态链接库DLL, 提供VC+调用的方法,提供了一种VC+与Matlab混合编程的快速实 现。关键词:Mat lab VC+ MCC Compiler 动态链接库 DLL简介:Mat lab作为当今世界上应用最为广泛的数学软件,具有非常强大的数值计算、 数据分析处理、系统分析、图形显示甚至符号运算的功能。已经在如生物工程,图像 处理,语音处理,雷达探空,声纳探水,地震探地,以及控制论,系统论等各个领域 得到广泛的应用。它是一个完整的数学平台,在这个平台上,用户只需寥寥数语就可 以完成十分复杂的功能,大大提高了工程分析计算、图像处理的效率。但是Matlab 强大的功能只能在它所提供的平

14、台上才能使用,即用户必须在安装Matlab系统的机 器上才能执行*.m文件。这样当用户需要将在Matlab下已开发完毕的复杂算法应用 到高级语言开发环境下时就带了问题,是将现成的东西集成高级语言开发的程序中 呢?还是用高级语言再重新实现一遍?显然大家所期望的是减少工作量,最好能将 Matlab下开发好的程序或函数直接应用到高级语言开发的程序中,这就是Mat lab 与高级语言的混合编程问题。VC+是当前Windows下的主要编程语言之一,它能方便地形成应用软件中所需 要的各种用户界面和工具并直接与系统及底层硬件交换数据。用VC+开发的系统具 有容易维护升级、界面友好、代码效率高、执行速度快等一

15、系列优点,因此已成为目 前应用软件开发中广泛采用的主要工具之一.因此,如何 将Mat lab与VC+进行有 效的混合编程广受工程科研人员的关注。解决这个问题,不仅能更好地发挥Mat lab 强大的功能,还能快速地进行软件开发,尤其是当软件开发中需要实现复杂的数学算 法、图形处理时尤为迫切。研究VC+与Mat lab的混合编程具有很大的实际意义。实例分析11编写Mat I ab函数函数文件suni_piod. m,内容如卜,:function suin prod = sum_prod(pl, p2)sum = pl+p2;% pl 与 p2 的和prod =pl.*p2; %pl与p2的点乘该函

16、数完成的是矩阵的求和与点乘的功能,卜而将介绍把该代码转换成c 什环境可用的代码的方法。2、Mat I ab6.5编译器设置(1)在同一台电脑上安装Matlab6. 5和Visual C+6. 0;(2)mex命令设置(a)运育Mat lab,在Matlab的命令窗I I (Command Window)键入“ mex -setup ”命令后,按回车键,安 装Mat lab编译器;(b)命令窗I I出现如卜.提示:Please choose your compiler for building external interface (MEX) files:Would you like mex t

17、o locale installed compilers此时键入,y,按回车;(c)命令窗I I出现如卜提示:Please choose youi coiupiler for building external interface (MEX) files:Would you like mex to locate installed compilers y/n? ySelect a compiler:1 Digital Visual Fortran version 6. 0 in CiTiogiain Files,Miciosoft Visual StudioLee C version 2. 4

18、 in C:MATLAB6P5syslcc2 Microsoft Visual C/C+ version 6. 0 in C:* Program FilesMicrosoft Visual Studio0 None此时键入 3”,按回车:选择Microsoft Visual C+6.0的编译器(d)命令窗口出现如下提示:Please verify your choices:Compiler: Miciosoft Visual C/C+ 6.0Location: C:Program Files Miciosoft Visual StudioAre these correct?(y/n):此时键入

19、按回车:确认选择Miciosoft Visual C+6. 0的编译器(3) mbuild命令设置(a)运行Matlab ,在Mat lab的命令窗I I (Command Window)键入11 mbuild -setup 命令后.按回车键.安装Mat lab编译器:(b)命令窗口出现如下提示:Please choose yoiu compiler for buildmg standalone MATLAB applications:Would you like mbuild to locate uistalled compilers y/n?此时键入寸”,按回车:(c)命令窗I I出现如下

20、提示:1 Lee C version 2.4 in C:MATLAB6P5syslccMiciosoft Visual C/C+ version 6.0 in Program FilesMicrosoft Visual Studio0 None此时键入 2” ,按回车;选择Microsoft Visual C+6. 0的编译器(d)命令窗口出现如下提示:Please verify your choices:Compiler: Miciosoft Visual C/C+ 6. 0Location: C:Program Files Miciosoft Visual StudioAre these

21、correct?(y/n):此时健入V、按回车:确认选择Microsoft Visual C+6.0的编译器(4)在 Matlab 的命令窗口 (Cc ind Window)键入 “cd (prefdir);mccsavepath prefdir; 启动 MATLAB add-in I 具条3、建立C+控制台工程新建一个C+控制台工程stNewFiles Projects Workspaces Other Documents蜀 ATLCOM AppWizard亘司 Cluster Resource Type Wizard 别Custom AppWizard 囱 Database Project

22、 算 DevStudio Add-in WizardPS Extended Stored Proc Wizard tftlSAPIExtension Wizard (pMaketile敏 MATLAB Project Wizard 备 MFCActiveX Controlwizard 囱 MFCAppWizard (dll)3MFC AppWizard (exe) XNew DatabaseWizardTi Utility Project奇 Win32 Application22Win32 Console Application Win32Dynamic-Link Library 河 Win3

23、2 StaticLibraryProject name:?|xiTeLocation:|D: MATLABMATLAB8VCMATLAC Create new workspaceAdd to current workspacer Dependency of:I3Platforms:Win32OKCancel归 Active Server Page ABinary File ABitmap File D C,C+ Header File fi C+ Source File 舟 Cursor File HTML Page 3,con File .: Macro File AResource Scr

24、ipt 彳刖 Resource Template SQL Script File = Text File其它都采用默认设置。然后在该工程中添加Test, epp文件Other DocumentsFiles I Projects | Workspaces |P Add to project:File|TestLocation:|D: MATLABMATLAB&VCMATLA4、启用 Mat I ab Add- i n工具条(1)在上面的VC工程中,在菜单栏的空白处右键单击鼠标,出现如下菜单Output/ WorkspaceStandardBuild/ Build MiniBarATLResour

25、ceEditDebugBrowseDatabaseo WizardBarTool bar 1Customize.点击Coustomize菜单项,出现如下Coustoimze对话框,选择Add-in and Macro Files标签,选中MATLAB Add-in选项,点Close按钮关闭对话 框,这里会在菜单附近 出现如下工具条,它就是Matlab Add-in I具条。I-IS金口亓他5、VC+6. 0环境及工程设置在上面的VC工程中,进行以下设置(1) VC+6. o环境设置单击菜单Tools,出现如下菜单用 Visual Component Manager与 Register Cont

26、rolA Error Lookup力 ActiveX Control Test ContainerA OLE/COM Object Viewer六勒+Z? MFC TracerCustomize.Options.k Macro.Record Quick Macro Orl+Shift+RPlay Quick Macro Ctrl+Shift+P单击Options菜单项,出现Options对话框,选择Diiectories标签,在include files里面加入:C, B1ATLAB6P5EXTERN INCLUDEC: MATLAB6P5EXTERN INCLUDECPP如下列图所示Opti

27、ons上JXPlatform:Directories Work同TTEditor | Tabs | Debug | Compatibility | BuildShow directories for:Win32(Include filesCancel在Library files里面加入:C MAILAB6P5 EXTERN LIBC: MATLAB6P5 EXTERN LIB WIN32C MATLAB6P5,EXTERN LIB, VIN32, MICR0S0FTMSVC60如卜图所示(2) VC+6. 0工程设置单击菜单Project,出现如下菜单Set Active ProjectAAdd To ProjectDependencies.Export Makefile.Insert Project into Workspace.单击Setting菜单项,出现Project Setting对话框,选择Link标签,在Object/libiaiy modules:下面 的文 本框内 容的后 而加入 libninifile. lib libmatlb. lib libmx. lib libniat. lib libniatpm. lib sgl. lib libmwsglm. lib libmwsemces. lib如 卜图所不

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com