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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

来源: 神经网络作者:AI俱乐部网友评论0 条浏览次数48

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连接管理函数

(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变量,只能在宏子例程中使用。

使用语法:

相关文档
最新文档