用Ecel Link实现Ecel与Matlab混合编程

上传人:m**** 文档编号:143319342 上传时间:2022-08-25 格式:DOC 页数:6 大小:56.50KB
收藏 版权申诉 举报 下载
用Ecel Link实现Ecel与Matlab混合编程_第1页
第1页 / 共6页
用Ecel Link实现Ecel与Matlab混合编程_第2页
第2页 / 共6页
用Ecel Link实现Ecel与Matlab混合编程_第3页
第3页 / 共6页
资源描述:

《用Ecel Link实现Ecel与Matlab混合编程》由会员分享,可在线阅读,更多相关《用Ecel Link实现Ecel与Matlab混合编程(6页珍藏版)》请在装配图网上搜索。

1、用 Excel Link 实现 Excel 与 Matlab 混合编程来源:神经网络作者:AI俱乐部网友评论0条浏览次数48Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。通过连接Excel 和Matlab,用户可以在Excel工作表空间和宏编程工具中使用Matlab的数值计算,图形处理 等功能,不需要脱离Excel环境。同时由Excel Link来保证两个工作环境中的数据交换和同步 更新。 1. Excel Link 的安装和和设置首先,在系统中安装 Excel 软件。然后安装 Matlab 和 Excel Link,用Matlab安装盘开始安装,

2、选择自定义安装中,在选中组件ExcelLink,如下图 所示:安装完Excel Link后还需要在Excel中进行一些设置后才能使用。启动Excel,选择菜 单工具”项下的加载宏项,弹出如下对话框:选中Excel Link项。如果该项不存在,则通过 浏览目录,在目录MATLAB%toolboxexlink下找到excllink.xla文件,如下图示,并确定。 选中ExcelLink项并确定后,在Excel中多了一个Excel Link工具条,如下图示:经过以上的 设置后就可以开始使用Excel Link 了。2. ExcelLink 连接管理函数(1) Matlabinit该函数只能在宏子例程

3、中使用。初始化ExcelLink和启动Matlab进程。只有在MLAutoStart 函数中使用“no”参数,才需要手动使用Matlabinit来初始化ExcelLink和启动Matlab进程, 如果使用参数“yes,则Matlabinit是自动执行的。使用语法: Matlabinit(2) MLAutoStart设置自动启动 Matlab 和 ExcelLink。在工作表中的使用语法:MLAutoStart(yes) MLAutoStart(no) 在宏中的使用语法: MLAutoStart yes MLAutoStart no 使用“yes参数,则当Excel启动时,自动启动Matlab和

4、ExcelLink;如果使用参数“no,则 当Excel启动时,不启动Matlab和ExcelLink。如果在此之前它们已经启动,则无任何影响。(3) MLClose终止Matlab进程并删除Matlab工作空间的所有变量。并通知Excel,Matlab不再运行。 在工作表中的使用语法:MLClose()在宏中的使用语法:MLClose(4) MLOpen启动 Matlab 进程。如果 Matlab 进程已经启动,则 MLOpen 函数不进行任何操作。在使用 MLClose 关闭 Matlab 进程后使用 MLOpen 来重新启动 Matlab。在工作表中的使用语法:MLOpen()在宏中的使

5、用语法:MLOpen3. ExcelLink 数据管理函数(1) Matlabfcn根据给定的Excel数据执行Matlab命令。在工作表中使用时的语法:matlabfcn(command, inputs)参数comma nd. Matlab将执行的命令,命令需要写成“comma nd”(使用双引号引起来)的 形式。参数 inputs 传给 Matlab 命令的变长输入参数列表。列表是包含数据的工作表单元格范围。 函数返回单一数值或者是字符串,结果返回到调用函数的单元格中。例如matlabfcn (sum”,B1:B1O);把从B1到B10的单元格中数据相加,如下图示:并将结果返回到当前的活动

6、单元格。即A11,结果如下图。(2) Matlabsub根据给定的 Excel 数据执行 Matlab 命令,并将结果返回到指定的单元格中。 在工作表中的使用语法:matlabsub(command, edat, inputs)comma nd 和 in puts 参数的与 matlabfc n 相同。参数edat,指定返回值写入在工作表中的位置。如果edat用双引号引起来,则edat必须是单 元格地址或范围的名字。如果参数不用引号引起edat的形式,则通过计算获得矩阵名。例如:matlabsub(sum,”A1”,B1:B1O);把工作表中从单元格B1到B10的数据相加, 并将结果返回到单元

7、格 A1 中。注意:edat指定的位置不能包含matlabsub所在的位置。(3) MLAppendMatrix将 Excel 工作表中的数据追加到 Matlab 中指定的矩阵中如果该矩阵不存在,则创建矩阵。 在工作表中使用的语法:MLAppendMatrix(var_name, mdat)在宏中使用的语法:MLAppendMatrix var_name, mdat注意要追加的数据维数要和原矩阵中的维数相匹配,否则出错。例如:MLAppendMatrix(a,A1:A2);假设矩阵a是个2行3列的矩阵,如下图:将 A1: A2 中的数据追加到矩阵后,如下图示成为矩阵的第四列,如下图示。单元格

8、B1 中是字符 a,函数 MLAppendMatrix (B1, A1:A2)的作用于 MLAppendMatrix (a, A1:A2)相同。(4) MLDeleteMatrix删除Matlab空间中指定的矩阵在工作表中使用的语法:MLDeleteMatrix(var_name);在宏中使用的语法:MLDeleteMatrix var_nameVar_name,是要删除的矩阵名,如果矩阵名在引号内“var_name的形式,则直接指定变量 名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。例如,单元格B1中的内容为a,MLDeleteMatrix (B1),则表示删除Mat

9、lab工作空间的矩 阵 a,它等价于 MLDeleteMatrix (a”)(5) MLEvalString将命令(写成字符串的形式)传到Matlab中执行。在工作表中使用的语法:MLEvalString(command);在宏中使用的语法:MLEvalString command参数comma nd如果是用引号引起来comma nd的形式,则是直接指定命令;如果不用引号 引起来 command 的形式,则 command 必须是包含了命令字符串的工作表的单元格地址或者 是范围。例如:MLEvalString (b=magic(4);表示在Matlab中执行命令b=magic(4);(6) M

10、LGetMatrix将指定的 Matlab 矩阵写入到 Excel 工作表中的指定位置。在工作表中使用的语法:MLGetMatrix (var_name, edat)在宏中使用的语法:MLGetMatrix var_name, edat参数Var_name,是要写入工作表的矩阵名,如果矩阵名在引号内“var_name的形式,则直 接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。参数edat指定了矩阵写入工组表的位置。如果参数是用引号引起edat的形式,则是直接指定 矩阵名,如果参数不用引号引起edat的形式,则通过计算获得矩阵名。例如: MLGetMatrix

11、(a, sheet1!B1);将矩阵a写入工作表sheet1以单元格B1起始的位置,如果a是一个2行3列的矩阵,则矩 阵占据sheet1的B1至U D2的空间。如果在A1中有字符串a,贝U MLGetMatrix (A1, sheet1!C1)的作用与MLGetMatrix (a, sheet1!C1)相同。函数运行结果如图示。(7) MLGetVar将MatLab矩阵传送给Excel VBA变量,只能在宏子例程中使用。使用语法:MLGetVar ML_var_name,VBA_var_name参数ML_var_name是将获取的矩阵名。如果矩阵名在引号内“Mvar_name”的形式,则直 接

12、指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。参数VBA_var_name,将其Matlab矩阵数据传给的VBA变量名,不用引号将其引起来。例如:Sub Fetch()MLGetVar J, DataJEnd Sub表示将Matlab矩阵J的数据写入到VBA变量DataJ中。(8) MLPutMatrix用指定位置的Excel工作表中的数据,创建或者覆盖Matlab矩阵。在工作表中使用的语法:MLPutMatrix(var_name, mdat)在宏中使用的语法:MLPutString var_name, mdat参数 var_name 是将有被创建或者被覆盖的

13、矩阵名。如果指定的矩阵不存在,则创建该矩阵, 如果矩阵已经存在,则覆盖该矩阵。参数mdat,指定工作表中的位置。例如:工作表中有A1到C2的数据,使用函数MLPutMatrix (”c”,A1:C2),则可以将这些 数据写到Matlab矩阵c中,如下图示。注意:如果修改工作表中的数据,则Matlab中的矩阵相应发生变化。如果把数据剪切到别的地 方,女口 D1 到 F2,则函数 MLPutMatrix (”c”,A1:C2)会自动更改为 MLPutMatrix (”c”, D1:F2)(9) MLPutVar使用VBA变量的数据创建或者覆盖Matlab矩阵。只能在宏子例程中使用。使用语法:MLP

14、utVar ML_var_name, VBA_var_name参数ML_var_name是将被创建或覆盖的矩阵名。如果矩阵名在引号内“ML_var_name”的形 式,则直接指定变量名,如果Mvar_name不用引号引起来,则通过计算获得实际矩阵的名 字。参数VBA_var_name,将其数据传给Matlab矩阵的VBA变量名,不用引号将其引起来。 如果 VBA_var_name 变量包含字符串的数据,则输出到 Matlab 为元胞数组格式。例如:Sub Put()MLPutVar K, DataKEnd Sub用VBA变量DataK中的数据创建或着覆盖Matlab矩阵K。4. 补充使用 Ex

15、cel Link 的注意事项(1) Excel工作表通常以“=作为起始标记,例如=matlabfcn (sum”,B1:B10);(2) 大多数的Excel Link函数中有两种定义变量的方式:直接定义,即将变量用双引号标记 则是直接定义变量,例如MLGetMatrix (bonds”,”sheet1!C1”),其中bonds是直接定义 的变量;间接定义,函数中的不用双引号的工作表单元地址或行列名称被看作是间接变量,函数 对其指引的内容进行操作。工作表单元地址可以包含页表序号,例如 MLDeleteMatrix(B1); 单元格B1中的内容为a,则相当于执行MLDeleteMatrix (”a

16、”);(3) 建议使用Excel Link的自动计算模式。如果在手动计算模式下使用MLGetMatrix函数, 当在单元格中输入完函数等式时,需要按F9键执行,而按下F9键将有可能引起其他工作表函 数的重复执行,产生不可预料的后果。设置Excel Link自动计算模式方法如下:在Excel工具 菜单的“选项”,选择重新计算标签,图 。(4) 如果需要在工作表中重新计算Excel Link函数,最好按F2键和回车键单步执行每个函 数。(5) 如果在MLGetMatrix函数中使用了单元的直接地址,那么当删除了行或列或者将函数从 其他单元复制到新的单元后,一定要重新修改地址。 Excel Link

17、 不能自动改变 MLGetMatrix 中的地址。(6) 在打开一个包含 ExcelLink 函数的 Excel 数据表的时候, Excel 会自动从上到下,从左 到右地执行这些函数,所有有可能出现如“#COMMAND!”或“#NONEXIST”等Excel错误提示, 只需关闭所有Matlab图形窗口,然后按F2键并回车重新单步执行单元格里地函数就可以了。5. 在工作表和在宏中使用 ExcelLink 的例子例1 :(在工作表中使用ExcelLink)如下图所示:使用mlopen ()函数启动Matlab,使用mlevalstring(load census)载入matlab自带的数据文件ce

18、nsus,其中包含矩阵cdate 和 pop。使用mlgetmatrix(cdate, E1),将Matlab空间的矩阵cdata写入到工作表中以E1开始 的位置;mlgetmatrix(pop,F1);将Matlab空间的矩阵pop写入到工作表中以F1开始的位置; 运行结果如下图所示:mlputmatrix(x, E1:E21)mlputmatrix(y, F1:F21)将E1到E21中的数据以及F1到F21中的数据分别写入到Matlab空间的矩阵变量x和y中。mlevalstring(z=x-mean(x)./std(x)mlevalstring(p2, s2=polyfit(z, y,

19、2) mlevalstring(pop2, de12=polyval(p2, z, s2) 根据所给的数据拟合多项式并进行偏差计算。mlevalstring(plot(x, y, +, x, pop2, g-, x, pop2+2*del2, r:, x, pop2-2*del2, r:) 绘出离散点、拟合曲线图及偏差曲线图,结果如下图示:mlclose();关闭 Matlab。例 2 :在宏中使用 Excel Link新建一个 Excel 工作表,打开 Visual Basic 编辑器,操作如下图示然后在工程管理器中插入模块,如下图:在模块代码区域写下如下代码,如下图:Function ex

20、cellinktest()MLOpen mlevalstring load census mlgetmatrix cdate, E1 mlgetmatrix pop, F1 mlputmatrix x, Range(E1:E21) mlputmatrix y, Range(F1:F21)Matlabrequestmlevalstring z=(x-mean(x)./std(x)mlevalstring p2,s2=polyfit(z,y,2)mlevalstring pop2,del2=polyval(p2,z,s2)mlevalstring plot(x,y,+,x,pop2,g-,x,pop2+2*del2 ,r:,x,pop2-2*del2 r:)End Function选中模块 1,在“工具”菜单,“引用”选项,如下图示。弹出引用对话框,选择Excel Link,如下图:确定后,即可运行该程序,结果与例 1 相同。1、MATLAB的数据导出问题:如果计算结果被保存为B矩阵:第一步在指令栏输入:save b.txt B -ascii %(把矩阵B的数据,导出到了 TXT文件中,名字为b.txt)% 回车结果b.txt文件就会被保存到work文件夹下打开b.txt,你会发现,如果数据很多,排列可能没有想象的整齐,而且是二进制显示的,你会怀 疑出问题了,别担心,没问题。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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