搜索
您的当前位置:首页正文

link使用介绍

来源:知库网


学习matlab之一

PC蛋蛋,赚Q币--另类营销

Matlab Excel link使用介绍

默认分类 2007-01-16 03:02:53 阅读2110 评论1 字号:大中小 订阅

作者:XLFinance 来源:XLFinance

ExcelLink是一个集成MS-Excel和Matlab应用的加载软件。通过连接Excel和Matlab,用户可以从Excel工作表和宏代码中访问Matlab的数值计算和图表功能。ExcelLink在两个不同的环境中交换和同步数据,用户不需离开Excel环境。ExcelLink的工作机理如下图所示:

安装Excel Link

通过Excel菜单中的工具-宏定位至toolbox/exlink目录下选择xla文件后确认即完成安装。

Excel Link宏加载成功后,Excel工具栏显示Excel Link命令。

启动Excel Link

在完成上述加载后,ExcelLink和Matlab会在Excel启动时自动启动。如果不希望自动启动,在工作表单元格中输入“=MLAutoStart(\"no\")”即可。

如需手工启动matlab进程,则点击startmatlab按钮或在工作表单元格内输入“=MLOpen()”,如需关闭matlab进程输入“=MLClose()”。

在Excel和Matlab之间保持连接通讯的函数包括:

Matlabinit:初始化Excel Link,启动matlab进程 MLAutostart:自动启动matlab进程 MLClose:终止matlab进程 MLOpen:启动Matlab进程

数据管理函数

matlabfcn:给定Excel数据,评估matlab命令

matlabsub:给定Excel数据和指定的输出区域,评估matlab命令 MLAppendMatrix:使用Excel工作表中的数据创建或添加matlab矩阵 MLDeleteMatrix:删除matlab矩阵 MLEvalstring:在matlab中执行命令

MLGetMatirx:将matlab矩阵的内容写入Excel MLGetVar:将matlab矩阵的内容写入VBA变量 MLPutMatirx:使用Excel数据创建或覆盖matlab矩阵 MLPutVar:使用VBA变量数据创建或覆盖matlab矩阵

以上函数中,MLGetVar和MLPutVar只能在宏中使用,其他函数都可作为公式写入Excel工作表。使用MLAppendMatrix、MLPutMatirx和MLPutVar从Excel复制数据至Matlab,使用MLEvalstring在Excel中执行matlab命令,使用matlabfcn、matlabsub、MLGetMatirx和MLGetVar将matlab数据复制至Excel。 语法

函数名称:ExcelLink的函数不区分大小写,而matlab的函数和变量名称区分大小写。

变量名称:直接指定变量名称时,需要加双引号””,例如删除matlab矩阵Bonds的命令:MLDeleteMatrix(\"Bonds\")。如为间接引用变量名称,则函数评估参数内容以获得最终的变量名,间接引用变量的参数必须为一个单元格地址或区域名称。如单元格A1中的内容为Bonds,则可以使用MLDeleteMatrix(A1)。 工作表

在Excel Link函数成功执行一项命令后,公式返回值0。

Excel 工作表函数返回值,而ExcelLink函数执行一项操作,因此F9重新计算键不会影响ExcelLink函数。为了实现ExcelLink函数的自动重算效果,可以在函数后加上某个包含可变内容的单元格。例如将Excel数据写入matlab矩阵bonds:=MLPutMatrix(\"bonds\,则在C1发生变动时函数会重新执行操作,C1的内容会影响函数的输出结果(如C1等于1时,函数将返回1而不是0),但不会影响函数的操作。

ExcelLink函数只接受A1格式的单元格地址参数,而不接受R1C1格式。

直接在工作表中输入Excel Link函数执行操作,不要使用函数向导。 宏

创建使用Excel Link函数的VBA宏,首先需要引用ExcelLink工程。方法是:在VBA下的菜单工具-引用,添加对excllink.xla的引用。

如果在宏过程中使用MLGetMatrix函数,需要添加MatlabRequest命令,在函数中则不需。

数据类型

ExcelLink只处理matlab二纬数值数组、一纬字符数组和二纬单元格数组,不能使用多维数组和结构数组。 日期

Excel和Matlab采用不同的日期计数标准,如果Excel使用的是1900基准,则传入Matlab的日期需要加上常数693960,如果使用1904年基准,则需加上常数695422。

使用案例:回归和曲线拟合

本例给出了一个名为DATA的数据区域,前两列作为自变量,最后一列为应变量y。

首先将数据传入matlab环境,使用命令MLPutMatrix(\"data\,创建一个名为data的3列矩阵。

其次需要组织y向量和自变量矩阵,注意由于需要添加常数项,因此自变量A在包含传入数据的前两列的同时,加上一个相同行数值为1的列,使用以下命令:

命令y=data(:3)提取data矩阵的第3列数据,第2行命令建立一个值为1的向量,最后一行将向量和data矩阵前两列合并成新的矩阵,即自变量A。

而后直接使用matlab的矩阵计算功能求得回归系数beta:

将回归系数和自变量相乘获得回归拟合结果:

下一步生成排序后的原始y值和拟合值fit::

继续使用多项式拟合的方法获得5阶多项式的预测值:

最后绘图比较原始的y值、回归拟合值和多项式拟合值:

使用案例:数据插值

给定一组原始数据:时间、温度和数量,现根据新给出的时间和温度值,通过插值方法求得对应的数量值。

执行过程分为5步:将原始数据包括标签传给matlab,matlab建立三个向量和一个单元格数组(标签字符),继续使用MLPutMatrix传入插值数据点Xa和Ta,第三步使用matlab内置函数griddata产生插值数据,第四步使用MLGetMatrix获得矩阵数据并写入工作表单元格F7开始的区域。最后生成曲面图。

使用案例:期权计算

本例使用二叉树模型计算资产价格树和期权价格树,给定期权计算所需基本信息,而后将数据传给matlab、执行matlab金融工具包中用于计算二叉树模型的函数binprice,最后将结果数据写入excel工作表的指定命令区域。

首先是基本信息数据,B4:B10,区域命名为bindata,使用命令=mlputmatrix(\"b\将数据传给matlab数组b。

而后将b的数据作为参数传给matlab函数binprice并执行该函数,公式为:=MLEvalString(\"[p,o]=binprice(b(1), b(2), b(3), b(4), b(5), b(6), b(7))\")

Binprice返回价格树p和期权价格树o。使用命令MLGetMatrix将数据写入工作表的命名区域asset_tree和value_tree,注意此命令区域需要使用双引号(和MLPutMatrix不同)。

使用案例:计算有效边界和绘图

本例根据给定的资产历史回报数据,计算有效边界组合和绘图。

首先给出三个资产的历史回报率数据,区域命令为retseries:

实施步骤为:

使用和前例相同的方法向matlab传输数据;

使用金融工具包函数ewstats计算给定回报序列的期望回报和方差协方差矩阵; 将上步计算结果作为参数传给金融工具包函数portopt,进行组合优化; 获取有效边界组合的风险回报向量和权重矩阵; 绘图。

错误信息汇总

#COLS>256 变量列数超出256 #COMMAND! 无法识别的命令

#DIMENSION! 使用添加数据操作函数,但所添加数据的纬度和原数据不符 #INVALIDNAME! 无效的变量名 #INVALIDTYPE! 无效的数据类型 #MATLAB? MATLAB未运行 #NAME? 无法识别函数名

#NONEXIST! 引用了不存在的矩阵名称 #ROWS>65536 变量行数超出限制 #SYNTAX? 语法错误 #VALUE! 参数缺少或类型错误

因篇幅问题不能全部显示,请点此查看更多更全内容

Top