第3章MATLAB及excel数据连结及绘图_第1页
第3章MATLAB及excel数据连结及绘图_第2页
第3章MATLAB及excel数据连结及绘图_第3页
第3章MATLAB及excel数据连结及绘图_第4页
第3章MATLAB及excel数据连结及绘图_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、金融数值计算与应用软件金融数值计算与应用软件 -MATLAB王王 辉辉 中央财经大学金融学院中央财经大学金融学院E-mail :第第3章章 MATLAB与与Excel数据连数据连接及绘图接及绘图3.1 MATLAB与与Excel数据连接数据连接3.1.1 MATLAB和和Excel的接口安装:的接口安装:. Excel Link的安的安装和和设置装和和设置Excel Link的设置的设置 n启动启动Excel,选择菜单,选择菜单“工具工具”项下的项下的“加载宏加载宏”项,弹出如下对话框项,弹出如下对话框 若该项不存在,则通过浏览目录,在目录若该项不存在,则通过浏览目录,在目录MATLAB/to

2、olbox/exlink下找到下找到excllink.xla文件文件在在Excel中多了一个中多了一个Excel Link工工具条,如下图示具条,如下图示:3.1.2 . ExcelLink管理函数管理函数手动启动手动启动matlab n要不想在每次启动时都启动要不想在每次启动时都启动matlab,则可以在电子表,则可以在电子表格中或函数输入框中输入以下命令格中或函数输入框中输入以下命令=MLAutoStart(“no”)n手动启动手动启动matlab (1)在在excel电子表格中输入命令电子表格中输入命令=MLOpen() (2) 利用利用excel的宏工具,在宏对话框中输入的宏工具,在宏

3、对话框中输入Matlabinit,然后单击执行按钮。然后单击执行按钮。 (3)按左上按钮按左上按钮startmatlab。1、ExcelLink连接管理函数连接管理函数 n(1) Matlabinit该函数只能在宏子例程中使用。初始化该函数只能在宏子例程中使用。初始化ExcelLink和启动和启动Matlab进程。只有在进程。只有在MLAutoStart函数中使用函数中使用“no”参数,才需要参数,才需要手动使用手动使用Matlabinit来初始化来初始化ExcelLink和启和启动动Matlab进程,进程,如果使用参数如果使用参数“yes”,则,则Matlabinit是自动是自动执行的。执行

4、的。使用语法:使用语法:Matlabinit (2) MLAutoStartn设置自动启动设置自动启动Matlab和和ExcelLink。在工作表中的使用语法:在工作表中的使用语法:MLAutoStart(yes)MLAutoStart(no)使用使用“yes”参数,则当参数,则当Excel启动时,自动启启动时,自动启动动Matlab和和ExcelLink;如果使用参数;如果使用参数“no”,则当,则当Excel启动时,不启动启动时,不启动Matlab和和ExcelLink。如果在此之前它们已经启动,则。如果在此之前它们已经启动,则无任何影响。无任何影响。 (3) MLClosen终止终止Ma

5、tlab进程并删除进程并删除Matlab工作空间的所工作空间的所有变量。并通知有变量。并通知Excel,Matlab不再运行。不再运行。在工作表中的使用语法:在工作表中的使用语法:MLClose()()在宏中的使用语法:在宏中的使用语法:MLClose(4) MLOpen启动启动Matlab进程进程如果如果Matlab进程已经启动,则进程已经启动,则MLOpen函数不函数不进行任何操作。在使用进行任何操作。在使用MLClose关闭关闭Matlab进程后使用进程后使用MLOpen来重新启动来重新启动Matlab。在工作表中的使用语法:在工作表中的使用语法:MLOpen()()在宏中的使用语法:在

6、宏中的使用语法:MLOpen (3) MLClosen终止终止Matlab进程并删除进程并删除Matlab工作空间的所工作空间的所有变量。并通知有变量。并通知Excel,Matlab不再运行。不再运行。在工作表中的使用语法:在工作表中的使用语法:MLClose()()在宏中的使用语法:在宏中的使用语法:MLCloseExcel时间与时间与Matlab的转换的转换nEXCEL的默认日期数开始与的默认日期数开始与1900年年1月月1日,日,而而MATLAB 的日期数开始于的日期数开始于0000年年1月月1日。日。 n如果用户使用如果用户使用MATLAB中的日期数计算中的日期数计算, 常数常数693

7、960起关键作用起关键作用: EXCEL日期数加上它进日期数加上它进入入MATLAB,或从或从MATLAB 日期数中减去它进日期数中减去它进入入EXCEL 2、ExcelLink数据管理函数数据管理函数 n(1) matlabfcn根据给定的根据给定的Excel数据执行数据执行Matlab命令。命令。在工作表中使用时的语法:在工作表中使用时的语法: matlabfcn(command, inputs) n=matlabfcn(“sum”,B3:B10);把从;把从B3到到B10的的单元格中数据相加单元格中数据相加 例:在例:在Matlab中生成中生成12维均匀随机向量维均匀随机向量aa,利用,

8、利用matlabfcn在在Excel中求其分量之和。中求其分量之和。(2) Matlabsubn根据给定的根据给定的Excel数据执行数据执行Matlab命令,并将结命令,并将结果返回到指定的单元格中果返回到指定的单元格中。在工作表中的使用语法:在工作表中的使用语法:matlabsub(command,edat,inputs)例如:例如:=matlabsub(”sum”,”A1”,B1:B10);把工作表中从单元格);把工作表中从单元格B1到到B10的数的数据相加,并将结果返回到单元格据相加,并将结果返回到单元格A1中。中。注意:注意:edat指定的位置不能包含指定的位置不能包含matlabs

9、ub所所在的位置。在的位置。 (3) MLAppendMatrixn将将Excel工作表中的数据追加到工作表中的数据追加到Matlab中指中指定的矩阵中如果该矩阵不存在,则创建矩阵。定的矩阵中如果该矩阵不存在,则创建矩阵。在工作表中使用的语法:在工作表中使用的语法:MLAppendMatrix(var_name,mdat)n注意要追加的数据维数要和原矩阵中的维数注意要追加的数据维数要和原矩阵中的维数相匹配,否则出错相匹配,否则出错 假设假设matlab中,矩阵中,矩阵a是个是个2行行3列的矩阵,如下图列的矩阵,如下图: 将将Excel表中表中A1:A2中的数据中的数据追加到矩阵后,如下图示追加

10、到矩阵后,如下图示成为矩阵的第四列,如下图示成为矩阵的第四列,如下图示 (4) MLDeleteMatrixn 删除删除Matlab空间中指定的矩阵空间中指定的矩阵在工作表中使用的语法:在工作表中使用的语法:MLDeleteMatrix(var_name););nVar_name,是要删除的矩阵名,如果矩阵名在引号,是要删除的矩阵名,如果矩阵名在引号内内“var_name”的形式,则直接指定变量名,如果的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩不用引号引起来,则通过计算获得实际矩阵的名字。阵的名字。例如,单元格例如,单元格B1中的内容为中的内容为a,ML

11、DeleteMatrix(B1),则表示删除),则表示删除Matlab工作空间的矩阵工作空间的矩阵a,它,它等价于等价于MLDeleteMatrix(”a”)4. xlswrite与与xlsread MATLAB提供的函数提供的函数xlswrite,具有将,具有将MATLAB中的数据写入中的数据写入EXCEL的功能。的功能。MATLAB提供的函数提供的函数xlsread,具有将,具有将EXCEL中的数据读入中的数据读入MATLAB的功能。的功能。 xlswrite的调用方式的调用方式 xlswrite(filename, M)xlswrite(filename, M, sheet)xlswri

12、te(filename, M, range)xlswrite(filename, M, sheet, range)xlswrite的输入参数的输入参数filename % EXCEL文件名文件名M % MATLAB工作空间中的大小为工作空间中的大小为mn的数的数组,该数组可以是字符型的,数值型的也可以是单元组,该数组可以是字符型的,数值型的也可以是单元数组,其中数组,其中m 65536且且n 256sheet % EXCEL中的工作簿中的工作簿range % EXCEL工作簿中的数据区域工作簿中的数据区域例如:将一个向量写入例如:将一个向量写入EXCEL文件文件v.xls,在在MATLAB中执

13、行如下命令:中执行如下命令:xlswrite(v, 1 5 -8 3.9 0)例例3.1.1 把元胞数组把元胞数组d = Time, Temp; 12 98; 13 99; 14 97写入到写入到EXCEL文件文件m.xls的一个规定的工作簿的一个规定的工作簿当中。当中。答案见答案见ex3_1_1.m xlsread的调用方式的调用方式 num = xlsread(filename)num = xlsread(filename, -1)num = xlsread(filename, sheet)num = xlsread(filename, range)num = xlsread(filena

14、me, sheet, range)num, txt = xlsread(filename, sheet, range)xlsread的输入与输出参数的输入与输出参数n输入参数:输入参数: filename % EXCEL文件名文件名 sheet % EXCEL中的工作簿名中的工作簿名 range % EXCEL工作簿中的数据区域工作簿中的数据区域n输出参数:输出参数: num %读入读入Excel文件数据文件数据 txt %保存文本内容保存文本内容 例例 3.1.2 将将m.xls复制到复制到matlab当当前工作目录下,并在前工作目录下,并在matlab命令窗命令窗口输入以下命令:口输入以下

15、命令:答案见ex3_1_2.m3.2 MATLAB绘图绘图3.2.1 二维数据曲线图二维数据曲线图1、绘制单根二维曲线、绘制单根二维曲线nplot函数最简单的调用格式是只包含一个输入参数:函数最简单的调用格式是只包含一个输入参数:plot(x)在这种情况下,当在这种情况下,当x是实向量时,以该向量元素的下标是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。实际上是绘制折线图。nplot函数的基本调用格式为:函数的基本调用格式为: plot(x,y) 其中其中x和和y为长度相同的向量,分别用于存储为长度相同的

16、向量,分别用于存储x坐标和坐标和y坐标数据。坐标数据。二维绘图的例子二维绘图的例子例例3.2.1 在在0 x2 区间内,绘制曲线区间内,绘制曲线 y=2e-0.5xcos(4x)答案见ex3_2_1.m例例3.2.2 假如你的帐户中有一笔假如你的帐户中有一笔10年的年的$1000存款,年利率为存款,年利率为r,那么那么10年后你的年后你的钱数与利率的关系是钱数与利率的关系是,画出该函数的图像。画出该函数的图像。答案见答案见ex3_2_2.mn1、当当x,y是同维矩阵时,是同维矩阵时,则以则以x,y对应列元素为横、纵对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵列数。坐标分别绘制曲线,曲线

17、条数等于矩阵列数。 2、对只包含一个输入参数的对只包含一个输入参数的plot函数函数,当输入参数是,当输入参数是实矩阵时,按列绘制每列元素值相对其下标的曲线,实矩阵时,按列绘制每列元素值相对其下标的曲线,曲线条数等于矩阵的列数。曲线条数等于矩阵的列数。3、当输入参数是复数矩阵时当输入参数是复数矩阵时,则按列分别以元素实部,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。和虚部为横、纵坐标绘制多条曲线。2、绘制多根二维曲线、绘制多根二维曲线plot函数的输入参数是矩阵形式函数的输入参数是矩阵形式例例3.2.3 画出画出S&P从从2008年年1月到月到2008年年10.20开盘价、最高

18、价、开盘价、最高价、最低价和收盘价的时间图。最低价和收盘价的时间图。 (1)横坐标是观测个数,纵坐标是价格,将四种横坐标是观测个数,纵坐标是价格,将四种价格画在一幅图中价格画在一幅图中(2)横坐标是时间,纵坐标是价格,将四种价)横坐标是时间,纵坐标是价格,将四种价格画在一幅图中格画在一幅图中(3)横坐标是时间,纵坐标是价格,画出其收)横坐标是时间,纵坐标是价格,画出其收盘价的时间图盘价的时间图答案见ex3_2_3.mn调用格式为:调用格式为:plot(x1,y1,x2,y2,xn,yn)(1)当输入参数都为向量时,当输入参数都为向量时,x1和和y1,x2和和y2,xn和和yn分别组成一组向量对

19、,每一组向量对的长度分别组成一组向量对,每一组向量对的长度可以不同。可以不同。(2) 当输入参数有矩阵形式时,配对的当输入参数有矩阵形式时,配对的x,y按对应列元素按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。数。含多个输入参数的含多个输入参数的plot函数函数例例3.2.4 分析下列程序绘制的曲线。分析下列程序绘制的曲线。nx1=linspace(0,2*pi,100);nx2=linspace(0,3*pi,100);nx3=linspace(0,4*pi,100);ny1=sin(x1);ny2=1+sin(x2);ny3=2

20、+sin(x3);nx=x1;x2;x3;ny=y1;y2;y3;nplot(x,y,x1,y1-1)具有两个纵坐标标度的图形具有两个纵坐标标度的图形 n调用格式为:调用格式为: plotyy(x1,y1,x2,y2)n其中其中x1,y1对应一条曲线,对应一条曲线,x2,y2对应另一条对应另一条曲线。横坐标的标度相同,纵坐标有两个,曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于左纵坐标用于x1,y1数据对,右纵坐标用于数据对,右纵坐标用于x2,y2数据对。数据对。例例3.2.5 用不同标度在同一坐标内用不同标度在同一坐标内绘制曲线绘制曲线y1=0.2e-0.5xcos(4x) 和和y2=2

21、e-0.5xcos(x)。答案见答案见ex3_2_5.m例例3.2.6画出画出S&P从从2008年年1月到月到2008年年10.20收盘价及其对数收收盘价及其对数收益率的时间图。益率的时间图。 答案见答案见ex3_2_6.mex3_2_6.m图形保持图形保持nhold on/off命令控制是保持原有图形还是刷命令控制是保持原有图形还是刷新原有图形,新原有图形,不带参数的不带参数的hold命令在两种状命令在两种状态之间进行切换。态之间进行切换。n例例3.2.7 采用图形保持,在同一坐标内绘制采用图形保持,在同一坐标内绘制曲线曲线y1=0.2e-0.5xcos(4x) 和和y2=2e-0.

22、5xcos(x)。答案见ex3_2_7.m设置曲线样式设置曲线样式 nplot(X1,Y1,LineSpec1,X2,Y2,LineSpec2) n将按顺序分别画出由三参数定将按顺序分别画出由三参数定Xi,Yi,LineSpeci的线条。的线条。n其中参数其中参数LineSpeci指明了线条的类型,标记指明了线条的类型,标记符号,和画线用的颜色。符号,和画线用的颜色。 例例3.2.8 采用不同颜色、不同线形以及不同标记采用不同颜色、不同线形以及不同标记在同一图形中画出在同一图形中画出y=cos(x),y=sin(x- /2)expx/100和和y=sin(x- )的图像的图像答案见答案见ex3

23、_2_8.m例例3.2.9 分析如下程序分析如下程序plot(t,sin(2*t),-mo, LineWidth,2, MarkerEdgeColor,k,MarkerFaceColor , .49 1 .63 ,MarkerSize,12)在原来程序的基础上在原来程序的基础上plot(mydate,sp08(:,3),y-*,mydate,sp08(:,3),m-.)例例3.2.10 画出画出S&P从从2008年年1月到月到2008年年10.20最高价、和最低价的时间图,不同价最高价、和最低价的时间图,不同价格以不同的线形、颜色和标记画出。格以不同的线形、颜色和标记画出。图形标注图形

24、标注 ntitle(图形名称图形名称)nxlabel(x轴说明轴说明)nylabel(y轴说明轴说明)ntext(x,y,图形说明图形说明)nlegend(图例图例1,图例图例2,)例例3.2.11 用不同颜色及线形画出用不同颜色及线形画出HSI指数从指数从1990年年1月月2日到日到1992年年12月月31日的收盘价和对日的收盘价和对数收益率的数收益率的1万倍的时间图。万倍的时间图。图形名称:图形名称:HIS收盘价和对数收益率收盘价和对数收益率X轴标注:观测轴标注:观测Y轴标注:轴标注:HIS收盘价和对数收益率的收盘价和对数收益率的1万倍万倍图形说明:时间是图形说明:时间是1990.1.2-

25、1992.12.31加图例加图例答案见ex3_2_11.m坐标控制坐标控制 naxis(xmin xmax ymin ymax zmin zmax)naxis equal:纵、横坐标轴采用等长刻度。:纵、横坐标轴采用等长刻度。naxis square:产生正方形坐标系:产生正方形坐标系(缺省为矩形缺省为矩形)。naxis auto:使用缺省设置。:使用缺省设置。naxis off:取消坐标轴。:取消坐标轴。naxis on:显示坐标轴。:显示坐标轴。网格线网格线和边框和边框n给坐标加网格线用给坐标加网格线用grid命令来控制命令来控制 grid on/off命令控制是画还是不画网格线,不命令控

26、制是画还是不画网格线,不带参数的带参数的grid命令在两种状态之间进行切换。命令在两种状态之间进行切换。n给坐标加边框用给坐标加边框用box命令来控制命令来控制 box on/off命令控制是加还是不加边框线,不命令控制是加还是不加边框线,不带参数的带参数的box命令在两种状态之间进行切换。命令在两种状态之间进行切换。例例3.2.12 在同一坐标中,可以绘在同一坐标中,可以绘制制3个同心圆,并加坐标控制。个同心圆,并加坐标控制。答案见答案见ex3_2_12.m图形的可视化编辑图形的可视化编辑nMATLAB 在图形窗口中提供了可视化的图形编辑工在图形窗口中提供了可视化的图形编辑工具,利用图形窗口

27、菜单栏或工具栏中的有关命令可具,利用图形窗口菜单栏或工具栏中的有关命令可以完成对窗口中各种图形对象的编辑处理。以完成对窗口中各种图形对象的编辑处理。n在图形窗口上有一个菜单栏和工具栏。菜单栏包含在图形窗口上有一个菜单栏和工具栏。菜单栏包含File、Edit、View、Insert、Tools、Window和和Help共共7个菜单项,工具栏包含个菜单项,工具栏包含11个命令按钮。个命令按钮。n利用可视化的图形编辑工具处理前面的例子利用可视化的图形编辑工具处理前面的例子图形窗口的分割图形窗口的分割 nsubplot(m,n,p)n该函数将当前图形窗口分成该函数将当前图形窗口分成mn个绘图区,个绘图

28、区,即每行即每行n个,共个,共m行,区号按行优先编号,且行,区号按行优先编号,且选定第选定第p个区为当前活动区。在每一个绘图区个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。允许以不同的坐标系单独绘制图形。期权的利润函数期权的利润函数nCall多头:多头:L=-Cer(T-t)+max(ST-X, 0)nPut多头:多头: L=-Per(T-t)+max(X-ST, 0)n例例3.2.13 假设投资者假设投资者1和投资者和投资者2在在3月份分别购买月份分别购买了一份了一份12月份到期的欧式看涨期权和看跌期权,执月份到期的欧式看涨期权和看跌期权,执行价格都是行价格都是X=100元

29、,看涨期权价格元,看涨期权价格C=8元,看跌元,看跌期权价格为期权价格为6元,无风险利率为元,无风险利率为3%,试给出该两位,试给出该两位投资者及其交易对手的利润函数并用四幅子图画出投资者及其交易对手的利润函数并用四幅子图画出利润函数图。利润函数图。答案见ex3_2_13.m3.2.2三维图形三维图形三维曲线三维曲线 nplot3(x1,y1,z1,选项选项1,x2,y2,z2,选项选项2,xn,yn,zn,选项选项n) n其中每一组其中每一组x,y,z组成一组曲线的坐标参数,选组成一组曲线的坐标参数,选项的定义和项的定义和plot函数相同。当函数相同。当x,y,z是同维向量是同维向量时,则时,则x,y,z 对应元素构成一条三维曲线。当对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以是同维矩阵时,则以x,y,z对应列元素绘制对应列元素绘制三维曲线,曲线条数等于矩阵列数。三维曲线,曲线条数等于矩阵列数。例例3.2.14 绘制三维曲线。绘制三维曲线。程序如下:程序如下:nt=0:pi/100:20*pi;nx=sin(t);ny=cos(t);nz=t.*sin(t).*cos(t);nplot3(x,y,z);ntitle(Line in 3-D Space);nxlabel(X);ylabel(Y);zlabel(Z);ngrid on;三维曲面三维曲面 n产生三维数据

温馨提示

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

评论

0/150

提交评论