资源描述:
《matlab与excel的混合编程e》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MATLAB与Excel的混合编程有两种方式:l利用MATLAB提供的ExcelLink插件,实现Excel与MATLAB的数据共享l利用MATLAB提供的Excel生成器,生成dll组件和VBA代码,dll组件可以进行COM生成器组件相似的操作,VBA代码则可以在Excel的VisualBasic编译器中直接使用,可以保存为插件下面分别介绍这两种方法(一)通过ExcelLink实现Excel和MATLAB的数据共享1.ExcelLink是一个软件插件,它可将Excel与MATLAB进行集成,通过MATLAB与Excel的链接,用户可以在Excel的工作空间中,利用Excel的宏编程功能
2、,使用MATLAB的数据处理和图形处理功能进行相关操作,同时Excel保证MATLAB和Excel工作空间数据的交换和同步更新.使用ExcelLink时,不必脱离Excel环境,而直接在Excel的工作区或者宏操作中调用MATLAB函数,Excel提供了11个函数来实现链接和数据操作.2.ExcelLink的安装ExcelLink对运行环境没有要求,只要能够同时运行MATLAB和Excel即可,大概要200KB的空间,在Windows平台下要求先安装Excel,再安装MATLAB.i.Excel的设置,启动Excel,如下图:首先要打开"开发工具"选项卡,"文件"à"选项"à"自定义功能
3、区",如下图所示,然后在右侧选中"开发工具".现在"开发工具"à"加载项",打开"加载宏"窗口,如下图所示:单击"浏览"按钮,在弹出的"路径选择"对话框中,选择MATLAB安装目录下的toolboxexlinkexcellink.xla(在这儿要注意了,由于笔者使用的是Excel2010,所以要选择excllink2007.xlam文件,通过将鼠标放在文件文件上,显示的tips可以看到,如下图)文件,然后单击确定后,返回到"加载宏"对话框:此时,单击"确定"按钮,此时ExcelLink将加载了MATLAB,Excel的窗口变化如下图所示:i.设置ExcelLink的自启动通过"MAT
4、LAB"à"选项(Preferences)"可以打开选项配置窗口.如下图所示,如果不想MATLAB每次在Excel启动时都自动启动,请取消第一个选项,当然也可以通过在数据单元格中输入命令的方式来实现关闭MATLAB的自启动,方法是在Excel的任意一个单元格中输入下面命令:=MLAutoStart("no"),然后回车就行了,要注意不要忘了前面有个等号!!!这该单元格显示的结果是0,也就是说在下次启动时,MATLAB不会随Excel的启动而启动了.该函数将会改变Excel初始化文件中对自启动ExcelLink和MATLAB的设置.1.ExcelLink的链接管理函数在上面我们已经用到了函
5、数MLAutoStart(),现在讲解下几个函数的用法:MLAutoStart()设置是否自动启动MATLAB,参数可以是"no"或者"yes"MATLABinit()初始化ExcelLink,并且启动MATLABMLClose()关闭MATLAB进程MLOpen()启动MATLAB进程在上面的命令中,MATLABinit只能以宏命令的方式运行,而其它的3个命令可以作为数据单元函数或者宏命令来执行.宏命令的运行方式是"开发工具"à"宏"à输入宏名à"执行".如果在设置中没有设置MATLAB随Excel的自启动,而是手动启动,那么在Excel中启动MATLAB,就需要用MATLABinit
6、来初始化ExcelLink并且启动MATLAB.MLClose()在保持Excel继续运行的状态下,用来终止MATLAB进程的运行.1.ExcelLink的数据管理函数Excel提供了9个数据管理函数,实现MATLAB与Excel之间的数据复制,并可在Excel中执行MATLAB命令.函数函数作用及用法MATLABfcn()对于给定的Excel数据,运行MATLAB命令MATLABsub()对于给定的Excel数据,运行MATLAB命令并指定输出位置MLDeleteMatrix()删除MATLAB矩阵MLEvalString()执行MATLAB命令MLGetMatrix()向Excel数
7、据表中写入MATLAB矩阵的数据内容MLGetVar()向Excel数据表VBA写入MATLAB矩阵的数据内容MLAppendMatrix()向MATLAB空间添加Excel数据表的数据MLPutMatrix()向Excel数据表创建或覆盖MATLAB矩阵MLPutVar()向Excel数据表VBA创建或覆盖MATLAB矩阵值得注意的是,我们能以数据单元函数的形式或者宏命令的形式调用除MLGetVar()和MLPutVar()以外所