MATLAB与Word、Excel的混合使用
华夫人:我们Notebook是由MathWork公司在MATLAB5.0中开始增加,实现MATLAB和Word的连接。
唐伯虎:哼!我们ExcelLink是在Windows环境下实现的Excel与Matlab连接。
华夫人:用了我们Notebook的人能在Word环境中“随心所欲的享用”MATLAB的浩瀚科技资源,感受到文字处理、科学计算、工程设计于一体的完美环境。
唐伯虎:没有错!而用了我们ExcelLink的朋友,在工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能时,根本不需要脱离Excel环境。实在是居家旅行.....
华夫人:杀人灭口......
唐伯虎、华夫人:必备良药!!!
唐伯虎:没有错!而用了我们ExcelLink的朋友,在工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能时,根本不需要脱离Excel环境。实在是居家旅行.....
华夫人:杀人灭口......
唐伯虎、华夫人:必备良药!!!
呵呵,开个玩笑,切入正题哈。
一、MATLAB和Word的混合使用
当然我们的计算机中得有MATLAB和word,生成的MATLAB Netobook文件又称为M-book文件。以下均以MATLAB R2014a和Microsoft Office Word 2003版本为例,其他版本则稍有出入。
1、Netobook的安装和使用环境。
启动MATLAB命令窗口,在其中输入:
>>notebook -setup
得到以下提示:
这样就可以使用MATLAB Notebook了。打开Notebook有两种方法。
(1)在MATLAB命令窗口输出:
>>notbook %新建一个M-book
(2)直接打开M-book.dot文件。
2、Netobook实例
其实Notebook就是一个Word的模板文档。它是通过动态链接和MATLAB进行交互的。其中交互的基本单位是“细胞”(cell)。M-book需要把在Word中输入的命令或者语句组成细胞。再传到MATLAB中运行,运行输出的结果继续以“细胞”的形式呈现在Notebook里。
以下是Netobook空白模板:(与Word相差就是下面的Notebook栏了)
(1)、执行命令的基本过程
- 采用文本格式输入命令,在命令结束时则不是按回车和空格;
- 从Notebook菜单中选中"Define Input Cell"选项,用来定义输入细胞;
- 从Notebook菜单中选中"Evaluate Cell"选项或者Ctrl+Enter。
其中输入细胞都显示黑色括号包括的绿色字符,输出的细胞都是黑色括号包括的蓝色字符,如果出现错误黑色括号包括的红色字符,其他文本默认为褐色字符(若觉得输不方便可先在MTALB编辑器中编辑)。如:
若要将输出的细胞转化为普通文本,选中要转化的细胞,在Notebook菜单中选中"Undefine Cells"或者 Alt+U。
(2)、例子
代码如下:
1 t=0:0.1:20; 2 y=1-cos(t).*exp(-t/5); 3 time=[0,20,20,0]; 4 amplitude=[0.95,0.95,1.05,1.05]; 5 fill(time,amplitude,'g'),axis([0,20,0,2]); 6 xlabel(time'),ylabel('amplitude'); 7 hold on 8 plot(t,y,'r','linewidth',2) 9 hold off 10 ymax=min(y)
结果如下:
3、Notebook使用的几个小问题
- 带鼠标操作的图形交互指令最好不要在Notebook文档中运行;
- MTALAB指令在M-book文档中运行的速度比在MATLAB命令窗口中执行要慢的多;
- 在需要打印Word文档时,可将细胞转化为普通文本,若以细胞形式打印将会影响打印效果;
二、MATLAB和Excel的混合使用
在MATLAB的基础上使用Exce时,与Word稍有不同,多需要了一个进行链接的插件,名为Excel Link。它通过对两者的链接,用户可在Excel的工作空间里,利用Excel的宏编程工具,来进行相关操作,同时它可以保证两个工作环境中数据的交换和同步更新。
在初始安装MATLAB时,默认的安装组件是勾选了Excel link的。下来实在Excel Link的相应设置:
1、Excel Link的安装
- 启动Microsoft Excel,在工具菜单栏下找到"加载宏"。
- 打开"加载宏"后,点击"浏览",接着选择用户自己的C:\Program Files\MATLAB\R2014a\toolbox\exlink下的excllink.xla文件,单击确定。如图:
- 返回"加载宏"窗口,单击确定。即可看到Excel窗口的变化,如下:
2、设置Excel Link的启动
安装完成后,在每次启动Excel时,Excel Link和MATLAB将自动运行。若不希望运行,可在Excel数据表单元中输入"=MLAutoStart("no")"函数。当再次启动Excel时,Excel Link和MATLABJ将不再启动。如图:
之后也可以在Excel中手动启动Excel Link和MATLAB。在工具菜单中选择"宏",接着选择"宏",在打开的"宏"对话框中输入"MATLANinit",即可。如图:
3、终止Excel Link的运行
当终止Excel时,Excel Link和MATLAB会被同时终止。
如果需要在Excel环境中终止MATLAB和Excel Link,则在工作表单元中输入"=MLClose()"。当需要重新启动Excel Link和 MATLAB时,可选择MLOpen或MATLABinit命令来启动。
4、Excel Link实例
打开包含在MATLAB中安装路径为C:\Program Files\MATLAB\R2014a\toolbox\exlink的示例文件Exlisamp.xls。
4.1、数据表执行方式
单击Exlisamp.xls中的Shteel标签,可以看到数据表中包含一个名为DATA的数组A4:C28。如图:
具体步骤如下:
(1)、选中单元E5,按F2键,回车执行函数"=MLPutMatrix("data",DATA)",将DATA拷贝到MATLAB中。DATA包含了 对3个变量的25次观测值,并且已知观测值有很强的线性相关性;
(2)、对E8、E9、E10、E13、E16、E19、E20、E21、E24、E25、E28执行相同的操作。如图:
代码如下:
1 x=1:1:25; 2 y1=[458 3 476 4 495 5 521 6 532 7 533 8 543 9 602 10 635 11 671 12 766 13 913 14 938 15 1013 16 1038 17 1134 18 1163 19 1319 20 1325 21 1591 22 2006 23 2043 24 2904 25 3282 26 5326 27 ]; 28 y2=[379.047453 29 430.3098643 30 462.4722111 31 472.0222433 32 501.7970821 33 476.7972595 34 467.2472272 35 570.8967919 36 641.1212438 37 743.6460664 38 767.5211469 39 773.558929 40 1143.781253 41 1279.593164 42 1201.21947 43 1098.694648 44 1251.081092 45 1478.743051 46 1163.157365 47 1479.157123 48 2086.177367 49 2011.591971 50 2666.224352 51 3483.345306 52 5197.79632 53 ]; 54 y3=[402.0080047 55 515.8528028 56 549.7113505 57 543.0183918 58 524.5498711 59 513.7749611 60 522.2080918 61 554.7609792 62 611.0946537 63 686.9714884 64 775.6072286 65 869.0230193 66 959.3974346 67 1040.418506 68 1108.635751 69 1164.812202 70 1215.276435 71 1273.274596 72 1360.322433 73 1507.557324 74 1757.090302 75 2163.358088 76 2794.475118 77 3733.58557 78 5080.215396 79 ]; 80 plot(x,y1,'o',x,y2,':',x,y3,'-.') 81 legend('Data','Fit','Newfit')
得出波形图如下:
图中Data、Fit和Newfit三条曲线进行比较,可发现数据具有很强的相关性,且不是线性独立的,拟合曲线和原始数据并不是十分吻合,但5阶多项式拟合则显示了更加精确的数学模型。
4.2、宏命令执行模式
单击Sheet标签,激活单元A4,但先不要执行。单元A4调用宏CurveFit可以再Visual Basic环境下打开CurveFit。操作如下:
(1)、在Excel中执行工具菜单栏下"宏"选项中的"Visual Basic编辑器",在工程中打开模板文件夹,如下图:
(2)、选中Moduel,则可以打开该模块,如下图:
(3)、在此模块打开的状态下,在其工具菜单栏中点击"引用"命令,在弹出的对话框中点击"Excellink"加载;
(4)、返回到Sheet2的单元A4,按F2回车,执行宏CurveFit。它将排序后的数据y,fit和newfit从MATLAB拷贝到数据表中。如下图:
5、Excel Link使用的几个小问题
(1)、Excel Link函数执行的时一个特定操作,而Microsoft Excel的函数返回的时一个确定的数值,所以Excel的操作和函数在Excel Link函数的控制下会有不同的表现。
(2)、大多数Excel Link函数中有两种定义变量的方式,即直接和间接方式。将变量用双引号标记即可直接定义变量,如"=MLDeleteMatrix("Bonds")",函数中不加双引号的工作区单元地址或行列名称被视为间接变量,函数对其指引内容进行操作。工作区单元地址可以包含页表序号。