Excel+Link实现Excel与Matlab混合编程(2)
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 \, 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为元胞数组格式。 例如: Sub Put()
MLPutVar \, 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自动计算模式方法如下:在Excel“工具”菜单的“选项”,选择重新计算标签,图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)如下图所示:
…… 此处隐藏:1428字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [建筑文档]2018年公需课:专业技术人员创新能力与
- [建筑文档]2013年福建教师招考小学数学历年真题
- [建筑文档]高中信息技术课flash知识点总结 - 图文
- [建筑文档]电工实训 - 图文
- [建筑文档]最高院公告案例分析100篇(民商篇)
- [建筑文档]南开中学高2017级14-15学年(上)期末
- [建筑文档]五粮液集团战略分析
- [建筑文档]鲁教版(2012秋季版)九年级化学 酸碱
- [建筑文档]超星尔雅2017中国哲学概论自整理题库答
- [建筑文档]关于成为海口金盘饮料公司材料独家供货
- [建筑文档]LNG学习资料第一册 基础知识 - 图文
- [建筑文档]四年级品社下册《好大一个家》复习资料
- [建筑文档]现阶段领导权力腐败的特点及发展趋势
- [建筑文档]魏晋南北朝诗歌鉴赏—嵇康
- [建筑文档]坚持追求真爱是理智的行为 正方一辩稿
- [建筑文档]湘西州刑释解教人员帮教安置工作存在的
- [建筑文档]园林工程试题库及答案
- [建筑文档]计算机长期没有向WSUS报告状态
- [建筑文档]日语最新流行语
- [建筑文档]B62-016 景观进场交底专题会议
- 2018年中考语文课内外古诗词鉴赏专题复
- 高考试题研究心得体会
- C语言基础题及答案
- 电气控制及PLC习题及答案
- 都昌小学家长学校汇报材料
- GMAT作文模板正确使用方法
- 俄军办坦克大赛:中国99式有望与豹2A6
- 成本会计练习题
- 酒店餐饮业最流行的5S管理方法
- 2014-2015学年山东省菏泽市高二(下)
- 《黄鹤楼送孟浩然之广陵》教案、说课、
- 2013年结构化学自测题 有答案版
- 2011西安世界园艺博览会游览解说词(附
- 窗口文明单位示范单位创建活动总结
- 2018满分超星尔雅就业课后练习期末答案
- 韶山市城市总体规划-基础资料
- 苏教版第三单元知识点归纳
- 第4章 曲轴模态分析
- 加大查办案件力度的思考
- 武汉CPC导轨介绍




