




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、金融数值计算与应用软件 -MATLAB,王 辉 中央财经大学金融学院 E-mail :,第3章 MATLAB与Excel数据连接及绘图,3.1 MATLAB与Excel数据连接 3.1.1 MATLAB和Excel的接口安装:. Excel Link的安装和和设置 Excel Link的设置 启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框,若该项不存在,则通过浏览目录,在目录MATLAB/toolbox/exlink下找到excllink.xla文件,在Excel中多了一个Excel Link工具条,如下图示:,3.1.2 . ExcelLink管理函数手动启动matlab
2、,要不想在每次启动时都启动matlab,则可以在电子表格中或函数输入框中输入以下命令=MLAutoStart(“no”) 手动启动matlab (1)在excel电子表格中输入命令=MLOpen() (2) 利用excel的宏工具,在宏对话框中输入Matlabinit,然后单击执行按钮。 (3)按左上按钮startmatlab。,1、ExcelLink连接管理函数,(1) Matlabinit该函数只能在宏子例程中使用。初始化ExcelLink和启动Matlab进程。只有在MLAutoStart函数中使用“no”参数,才需要手动使用Matlabinit来初始化ExcelLink和启动Matla
3、b进程,如果使用参数“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不再运行。在工作
4、表中的使用语法: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月
5、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) M
6、atlabsub,根据给定的Excel数据执行Matlab命令,并将结果返回到指定的单元格中。在工作表中的使用语法:matlabsub(command,edat,inputs)例如:=matlabsub(”sum”,”A1”,B1:B10);把工作表中从单元格B1到B10的数据相加,并将结果返回到单元格A1中。注意:edat指定的位置不能包含matlabsub所在的位置。,(3) MLAppendMatrix,将Excel工作表中的数据追加到Matlab中指定的矩阵中如果该矩阵不存在,则创建矩阵。在工作表中使用的语法:MLAppendMatrix(var_name,mdat) 注意要追加的数据
7、维数要和原矩阵中的维数相匹配,否则出错,假设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,
8、它等价于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 %
9、 MATLAB工作空间中的大小为mn的数组,该数组可以是字符型的,数值型的也可以是单元数组,其中m 65536且n 256 sheet % EXCEL中的工作簿 range % EXCEL工作簿中的数据区域 例如:将一个向量写入EXCEL文件v.xls,在MATLAB中执行如下命令: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 = x
10、lsread(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复制
11、到matlab当前工作目录下,并在matlab命令窗口输入以下命令:,答案见ex3_1_2.m,3.2 MATLAB绘图3.2.1 二维数据曲线图,1、绘制单根二维曲线 plot函数最简单的调用格式是只包含一个输入参数: plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 plot函数的基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。,二维绘图的例子,例3.2.1 在0 x2区间内,绘制曲线 y=2e-0.5xcos(4x),答案见ex3_2_1.m,例3.2.2 假
12、如你的帐户中有一笔10年的$1000存款,年利率为r,那么10年后你的钱数与利率的关系是,画出该函数的图像。,答案见ex3_2_2.m,1、当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵列数。 2、对只包含一个输入参数的plot函数,当输入参数是实矩阵时,按列绘制每列元素值相对其下标的曲线,曲线条数等于矩阵的列数。 3、当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。,2、绘制多根二维曲线 plot函数的输入参数是矩阵形式,例3.2.3 画出S x2=linspace(0,3*pi,100); x3=linspace(0,4*p
13、i,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(4x) 和y2=2e-0.5xcos(x)。,答案见ex3_2_5.m,例3.2.6画出S x=sin(t); y=
14、cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title(Line in 3-D Space); xlabel(X);ylabel(Y);zlabel(Z); grid on;,三维曲面,产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; X,Y=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。,绘制三维曲面的函数,surf函数和mesh函数的调用格式为: mesh(x
15、,y,z,c) surf(x,y,z,c) 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。,标准三维曲面,sphere函数的调用格式为: x,y,z=sphere(n) cylinder函数的调用格式为: x,y,z= cylinder(R,n) MATLAB还有一个peaks 函数 Z = peaks(n) 例3.2.15-3.2.17,三维图演示,k = 5; n = 2k-1; x,y,z = sphere(n); c = hadamard(2k); surf(x,y,z,c); colormap(1 1 0; 0 1 1;0.5 0.7 1) axis equal,修改坐标刻度,(1)手工修改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论