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

下载本文档

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

文档简介

金融数值计算与应用软件

--MATLAB王辉中央财经大学金融学院E-mail:Tel:第3章MATLAB与Excel数据连接及绘图3.1MATLAB与Excel数据连接3.1.1MATLAB和Excel的接口安装:.ExcelLink的安装和和设置ExcelLink的设置

启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框若该项不存在,则通过浏览目录,在目录

MATLAB/toolbox/exlink下找到

excllink.xla文件在Excel中多了一个ExcelLink工具条,如下图示:3.1.2.ExcelLink管理函数

手动启动matlab

要不想在每次启动时都启动matlab,则可以在电子表格中或函数输入框中输入以下命令=MLAutoStart(“no”)手动启动matlab(1)在excel电子表格中输入命令=MLOpen()(2)利用excel的宏工具,在宏对话框中输入Matlabinit,然后单击执行按钮。

(3)按左上按钮"startmatlab"。1、ExcelLink连接管理函数

(1)Matlabinit

该函数只能在宏子例程中使用。初始化ExcelLink和启动Matlab进程。只有在MLAutoStart函数中使用“no”参数,才需要手动使用Matlabinit来初始化ExcelLink和启动Matlab进程,

如果使用参数“yes”,则Matlabinit是自动执行的。

使用语法:Matlabinit

(2)MLAutoStart设置自动启动Matlab和ExcelLink。

在工作表中的使用语法:

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)MLClose终止Matlab进程并删除Matlab工作空间的所有变量。并通知Excel,Matlab不再运行。

在工作表中的使用语法:

MLClose()

在宏中的使用语法:

MLClose

Excel时间与Matlab的转换EXCEL的默认日期数开始与1900年1月1日,而MATLAB的日期数开始于0000年1月1日。如果用户使用MATLAB中的日期数计算,常数693960起关键作用:EXCEL日期数加上它进入MATLAB,或从MATLAB日期数中减去它进入EXCEL

2、ExcelLink数据管理函数

(1)matlabfcn

根据给定的Excel数据执行Matlab命令。

在工作表中使用时的语法:

matlabfcn(command,inputs)=matlabfcn(“sum”,B3:B10);把从B3到B10的单元格中数据相加例:在Matlab中生成12维均匀随机向量aa,利用matlabfcn在Excel中求其分量之和。(2)Matlabsub根据给定的Excel数据执行Matlab命令,并将结果返回到指定的单元格中。

在工作表中的使用语法:

matlabsub(command,edat,inputs)

例如:=matlabsub(”sum”,”A1”,B1:B10);把工作表中从单元格B1到B10的数据相加,并将结果返回到单元格A1中。

注意:edat指定的位置不能包含matlabsub所在的位置。

(3)MLAppendMatrix将Excel工作表中的数据追加到Matlab中指定的矩阵中如果该矩阵不存在,则创建矩阵。

在工作表中使用的语法:

MLAppendMatrix(var_name,mdat)注意要追加的数据维数要和原矩阵中的维数相匹配,否则出错

假设matlab中,矩阵a是个2行3列的矩阵,如下图:

将Excel表中A1:A2中的数据追加到矩阵后,如下图示成为矩阵的第四列,如下图示

(4)MLDeleteMatrix

删除Matlab空间中指定的矩阵

在工作表中使用的语法:

MLDeleteMatrix(var_name);Var_name,是要删除的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。

例如,单元格B1中的内容为a,MLDeleteMatrix(B1),则表示删除Matlab工作空间的矩阵a,它等价于MLDeleteMatrix(”a”)4.xlswrite与xlsread

MATLAB提供的函数xlswrite,具有将MATLAB中的数据写入EXCEL的功能。MATLAB提供的函数xlsread,具有将EXCEL中的数据读入MATLAB的功能。xlswrite的调用方式

xlswrite('filename',M)xlswrite('filename',M,sheet)xlswrite('filename',M,'range')xlswrite('filename',M,sheet,'range')xlswrite的输入参数filename%EXCEL文件名M%MATLAB工作空间中的大小为m×n的数组,该数组可以是字符型的,数值型的也可以是单元数组,其中m<65536且n<256sheet%EXCEL中的工作簿range%EXCEL工作簿中的数据区域例如:将一个向量写入EXCEL文件v.xls,在MATLAB中执行如下命令:xlswrite('v',[15-83.90])例3.1.1把元胞数组d={'Time','Temp';1298;1399;1497}写入到EXCEL文件m.xls的一个规定的工作簿当中。答案见ex3_1_1.mxlsread的调用方式

num=xlsread(filename)num=xlsread(filename,-1)num=xlsread(filename,sheet)num=xlsread(filename,'range')num=xlsread(filename,sheet,'range')[num,txt]=xlsread(filename,sheet,'range')xlsread的输入与输出参数输入参数:

filename%EXCEL文件名

sheet%EXCEL中的工作簿名

range%EXCEL工作簿中的数据区域输出参数:

num%读入Excel文件数据

txt%保存文本内容

例3.1.2将m.xls复制到matlab当前工作目录下,并在matlab命令窗口输入以下命令:答案见ex3_1_2.m3.2MATLAB绘图

3.2.1二维数据曲线图1、绘制单根二维曲线plot函数最简单的调用格式是只包含一个输入参数:plot(x)在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。plot函数的基本调用格式为:

plot(x,y)

其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。二维绘图的例子例3.2.1在0≤x≤2

区间内,绘制曲线

y=2e-0.5xcos(4πx)答案见ex3_2_1.m例3.2.2假如你的帐户中有一笔10年的$1000存款,年利率为r,那么10年后你的钱数与利率的关系是,画出该函数的图像。答案见ex3_2_2.m

1、当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵列数。

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

(1)横坐标是观测个数,纵坐标是价格,将四种价格画在一幅图中(2)横坐标是时间,纵坐标是价格,将四种价格画在一幅图中(3)横坐标是时间,纵坐标是价格,画出其收盘价的时间图答案见ex3_2_3.m

调用格式为:plot(x1,y1,x2,y2,…,xn,yn)(1)当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。(2)当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。含多个输入参数的plot函数例3.2.4分析下列程序绘制的曲线。x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1)

具有两个纵坐标标度的图形

调用格式为:

plotyy(x1,y1,x2,y2)其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。

例3.2.5用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。答案见ex3_2_5.m例3.2.6画出S&P从2008年1月到2008年10.20收盘价及其对数收益率的时间图。

答案见ex3_2_6.m图形保持holdon/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。例3.2.7采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。

答案见ex3_2_7.m设置曲线样式

plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2…)

将按顺序分别画出由三参数定Xi,Yi,LineSpeci的线条。其中参数LineSpeci指明了线条的类型,标记符号,和画线用的颜色。

例3.2.8采用不同颜色、不同线形以及不同标记在同一图形中画出y=cos(x),y=sin(x-

/2)exp{x/100}和y=sin(x-

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

title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(图例1,图例2,…)例3.2.11用不同颜色及线形画出HSI指数从1990年1月2日到1992年12月31日的收盘价和对数收益率的1万倍的时间图。图形名称:HIS收盘价和对数收益率X轴标注:观测Y轴标注:HIS收盘价和对数收益率的1万倍图形说明:时间是1990.1.2-1992.12.31加图例答案见ex3_2_11.m坐标控制

axis([xminxmaxyminymaxzminzmax])axisequal:纵、横坐标轴采用等长刻度。axissquare:产生正方形坐标系(缺省为矩形)。axisauto:使用缺省设置。axisoff:取消坐标轴。axison:显示坐标轴。网格线和边框给坐标加网格线用grid命令来控制

gridon/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。给坐标加边框用box命令来控制

boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。例3.2.12在同一坐标中,可以绘制3个同心圆,并加坐标控制。答案见ex3_2_12.m图形的可视化编辑MATLAB在图形窗口中提供了可视化的图形编辑工具,利用图形窗口菜单栏或工具栏中的有关命令可以完成对窗口中各种图形对象的编辑处理。在图形窗口上有一个菜单栏和工具栏。菜单栏包含File、Edit、View、Insert、Tools、Window和Help共7个菜单项,工具栏包含11个命令按钮。利用可视化的图形编辑工具处理前面的例子图形窗口的分割

subplot(m,n,p)该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。期权的利润函数Call多头:L=-Cer(T-t)+max(ST-X,0)Put多头:L=-Per(T-t)+max(X-ST,0)例3.2.13假设投资者1和投资者2在3月份分别购买了一份12月份到期的欧式看涨期权和看跌期权,执行价格都是X=100元,看涨期权价格C=8元,看跌期权价格为6元,无风险利率为3%,试给出该两位投资者及其交易对手的利润函数并用四幅子图画出利润函数图。答案见ex3_2_13.m3.2.2三维图形

三维曲线

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。例3.2.14绘制三维曲线。程序如下:t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title('Linein3-DSpace');xlabel('X');ylabel('Y');zlabel('Z');gridon;

三维曲面

产生三维数据

在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:

x=a:d1:b

温馨提示

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

评论

0/150

提交评论