首页 excel link 实现Excel、Matlab数据接口

excel link 实现Excel、Matlab数据接口

举报
开通vip

excel link 实现Excel、Matlab数据接口Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。通过连接Excel和Matlab,用户可以在Excel工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能,不需要脱离Excel环境。同时由Excel Link 来保证两个工作环境中的数据交换和同步更新。 1. Excel Link的安装和和设置首先,在系统中安装Excel软件。然后安装Matlab 和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,安装完...

excel link 实现Excel、Matlab数据接口
Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。通过连接Excel和Matlab,用户可以在Excel工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能,不需要脱离Excel环境。同时由Excel Link 来保证两个工作环境中的数据交换和同步更新。 1. Excel Link的安装和和设置首先,在系统中安装Excel软件。然后安装Matlab 和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,安装完Excel Link后还需要在Excel中进行一些设置后才能使用。启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框:选中Excel Link项。如果该项不存在,则通过浏览目录,在目录%MATLAB% toolboxexlink下找到excllink.xla文件,,并确定。选中ExcelLink项并确定后,在Excel中多了一个Excel Link工具条. 经过以上的设置后就可以开始使用Excel Link了。 2. ExcelLink连接管理 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 (1) Matlabinit 该函数只能在宏子例程中使用。初始化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和ExcelLink;如果使用参数“no”,则当Excel启动时,不启动Matlab和ExcelLink。如果在此之前它们已经启动,则无任何影响。 (3) MLClose 终止Matlab进程并删除Matlab工作空间的所有变量。并通知Excel,Matlab 不再运行。 在工作表中的使用语法: MLClose() 在宏中的使用语法: MLClose (4) MLOpen 启动Matlab进程。如果Matlab进程已经启动,则MLOpen函数不进行任何操作。在使用MLClose关闭Matlab进程后使用MLOpen来重新启动Matlab。 在工作表中的使用语法: MLOpen() 在宏中的使用语法: MLOpen 3. ExcelLink数据管理函数 (1) Matlabfcn 根据给定的Excel数据执行Matlab命令。 在工作表中使用时的语法: matlabfcn(command, inputs) 参数command,Matlab将执行的命令,命令需要写成“command”(使用双引号引起来)的形式。 参数 inputs 传给Matlab命令的变长输入参数列表。列表是包含数据的工作表单元格范围。 函数返回单一数值或者是字符串,结果返回到调用函数的单元格中。 例如matlabfcn(”sum”,B1:B10);把从B1到B10的单元格中数据相加. 并将结果返回到当前的活动单元格。即A11。 (2) Matlabsub 根据给定的Excel数据执行Matlab命令,并将结果返回到指定的单元格中。在工作表中的使用语法: matlabsub(command,edat,inputs) command和inputs参数的与matlabfcn相同。 参数edat,指定返回值写入在工作表中的位置。如果edat用双引号引起来,则edat必须是单元格地址或范围的名字。如果参数不用引号引起edat的形式,则通过计算获得矩阵名。 例如:matlabsub(”sum”,”A1”,B1:B10);把工作表中从单元格B1到B10的数据相加,并将结果返回到单元格A1中。 注意:edat指定的位置不能包含matlabsub所在的位置。 (3) MLAppendMatrix 将Excel工作表中的数据追加到Matlab中指定的矩阵中如果该矩阵不存在,则创建矩阵。 在工作表中使用的语法: MLAppendMatrix(var_name,mdat) 在宏中使用的语法: MLAppendMatrix var_name,mdat 注意要追加的数据维数要和原矩阵中的维数相匹配,否则出错。 例如:MLAppendMatrix(”a”,A1:A2);假设矩阵a是个2行3列的矩阵. 将A1:A2中的数据追加到矩阵后,成为矩阵的第四列。 单元格B1中是字符a,函数MLAppendMatrix(B1,A1:A2)的作用与MLAppendMatrix(”a”,A1:A2)相同。 (4) MLDeleteMatrix 删除Matlab空间中指定的矩阵 在工作表中使用的语法: MLDeleteMatrix(var_name); 在宏中使用的语法: MLDeleteMatrix var_name Var_name,是要删除的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。 例如,单元格B1中的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 为a,MLDeleteMatrix(B1),则表示删除Matlab工作空间的矩阵a,它等价于MLDeleteMatrix(”a”) (5) MLEvalString 将命令(写成字符串的形式)传到Matlab中执行。 在工作表中使用的语法: MLEvalString(command); 在宏中使用的语法: MLEvalString command 参数command如果是用引号引起来”command”的形式,则是直接指定命令;如果不用引号引起来command的形式,则command必须是包含了命令字符串的工作表的单元格地址或者是范围。 例如:MLEvalString(”b=magic(4)”); 表示在Matlab中执行命令b=magic(4); (6) MLGetMatrix 将指定的Matlab矩阵写入到Excel工作表中的指定位置。 在工作表中使用的语法: MLGetMatrix(var_name,edat) 在宏中使用的语法: MLGetMatrix var_name,edat 参数Var_name,是要写入工作表的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。 参数edat指定了矩阵写入工组表的位置。如果参数是用引号引起”edat”的形式,则是直接指定矩阵名,如果参数不用引号引起edat的形式,则通过计算获得矩阵名。 例如:MLGetMatrix(”a”,”sheet1!B1”); 将矩阵a写入工作表sheet1以单元格B1起始的位置,如果a是一个2行3列的矩阵,则矩阵占据sheet1的B1到D2的空间。如果在A1中有字符串a,则MLGetMatrix(A1,” sheet1!C1”)的作用与MLGetMatrix (”a”,”sheet1!C1”)相同。函数运行结果如图示。 (7) MLGetVar 将MatLab矩阵传送给Excel VBA变量,只能在宏子例程中使用。 使用语法: MLGetVar ML_var_name,VBA_var_name 参数ML_var_name是将获取的矩阵名。如果矩阵名在引号内“ML_var_name”的形式,则直接指定变量名,如果ML_var_name不用引号引起来,则通过计算获得 实际矩阵的名字。 参数VBA_var_name,将其Matlab矩阵数据传给的VBA变量名,不用引号将其引起来。 例如: Sub Fetch() MLGetVar "J", DataJ End Sub 表示将Matlab矩阵J的数据写入到VBA变量DataJ中。 (8) MLPutMatrix 用指定位置的Excel工作表中的数据,创建或者覆盖Matlab矩阵。 在工作表中使用的语法: MLPutMatrix(var_name,mdat) 在宏中使用的语法: MLPutString var_name,mdat 参数var_name是将有被创建或者被覆盖的矩阵名。如果指定的矩阵不存在,则创建该矩阵,如果矩阵已经存在,则覆盖该矩阵。 参数mdat,指定工作表中的位置。 例如:工作表中有A1到C2的数据,使用函数MLPutMatrix(”c”,A1:C2),则可以将这些数据写到Matlab矩阵c中。 注意:如果修改工作表中的数据,则Matlab中的矩阵相应发生变化。如果把数据剪切到别的地方,如D1到F2,则函数MLPutMatrix(”c”,A1:C2)会自动更改为MLPutMatrix(”c”,D1:F2) (9) MLPutVar 使用VBA变量的数据创建或者覆盖Matlab 矩阵。只能在宏子例程中使用。 使用语法: MLPutVar ML_var_name,VBA_var_name 参数ML_var_name是将被创建或覆盖的矩阵名。如果矩阵名在引号内 “ML_var_name”的形式,则直接指定变量名,如果ML_var_name不用引号引起来,则通过计算获得实际矩阵的名字。 参数VBA_var_name,将其数据传给Matlab矩阵的VBA变量名,不用引号将其引起来。 如果VBA_var_name变量包含字符串的数据,则输出到Matlab为元胞数组 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 。例如: Sub Put() MLPutVar "K", DataK End Sub 用VBA变量DataK中的数据创建或着覆盖Matlab矩阵K。 4. 补充使用Excel Link的注意事项 (1) Excel工作表通常以“=”作为起始标记,例如=matlabfcn(”sum”, B1:B10); (2)大多数的Excel Link函数中有两种定义变量的方式:直接定义,即将变量用双引号标记则是直接定义变量,例如MLGetMatrix (”bonds”,”sheet1!C1”),其中bonds是直接定义的变量;间接定义,函 数中的不用双引号的工作表单元地址或行列名称被看作是间接变量,函数对其指引的内容进行操作。工作表单元地址可以包含页表序号,例如MLDeleteMatrix (B1);单元格B1中的内容为a,则相当于执行MLDeleteMatrix(”a”); (3)建议使用Excel Link的自动计算模式。如果在手动计算模式下使用MLGetMatrix函数,当在单元格中输入完函数等式时,需要按F9键执行,而按下F9键将有可能引起其他工作表函数的重复执行,产生不可预料的后果。设置Excel Link自动计算模式方法如下:在Ex cel“工具”菜单的“选项”,选择重新计算标签,图4.2.13。 (4)如果需要在工作表中重新计算Excel Link函数,最好按F2键和回车键单步执行每个函数。 (5)如果在MLGetMatrix函数中使用了单元的直接地址,那么当删除了行或列或者将函数从其他单元复制到新的单元后,一定要重新修改地址。Excel Link 不能自动改变MLGetMatrix中的地址。 (6)在打开一个包含ExcelLink函数的Excel数据表的时候,Excel会自动从上到下,从左到右地执行这些函数,所有有可能出现如“#COMMAND!”或 “#NONEXIST”等Excel错误提示,只需关闭所有Matlab图形窗口,然后按F2键并回车重新单步执行单元格里地函数就可以了。 5. 在工作表和在宏中使用ExcelLink的例子 例1 :(在工作表中使用ExcelLink)所示: 使用mlopen()函数启动Matlab, 使用mlevalstring("load census")载入matlab自带的数据文件census,其中包含矩阵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,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 excellinktest() MLOpen mlevalstring "load census" mlgetmatrix "cdate", "E1" mlgetmatrix "pop", "F1" mlputmatrix "x", Range("E1:E21") mlputmatrix "y", Range("F1:F21") Matlabrequest mlevalstring "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文件夹下。
本文档为【excel link 实现Excel、Matlab数据接口】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321635
暂无简介~
格式:doc
大小:30KB
软件:Word
页数:0
分类:理学
上传时间:2019-05-14
浏览量:4