技巧⽤途
对于数据分析来说,很多时候⽤户希望数据分析的结果可以保存到常⽤格式的⽂件中,⽐如doc或者xls⽂件。MATLAB有专门的读写Excel⽂档的函数:xlsread和xlswrite,可以根据⽤户需要将数据结果保存到Excel⽂件中指定的⼯作表或者将Excel⽂件中的数据读⼊MATLAB⼯作空间。
对于图形结果,MATLAB没有提供现成的函数,但是MATLAB完全可以将图形结果输出
到Excel⼯作簿中,甚⾄可以操作Excel编程,⽐如控制Excel对某⼀个区域的数据进⾏分析,绘制Excel提供的各类统计图表等。这时需要⼀种称为OLE(Object Linking and Embedding)即对象链接与嵌⼊技术,它是ActiveX技术的前⾝,基于COM(Component Object Model)即组件对象模型,是不同的软件环境之间共享程序功能的⼀种⽅式。这⼀节介绍MATLAB控制Excel⽂件的⽅式,熟练使⽤MATLAB操作Excel⽂件,可以建⽴符合⽤户需要的专业报表。技巧实现
1. MATLAB⾃动化功能介绍
MATLAB⽀持组件⾃动化(COM Automation),这是⼀个COM协议,该协议允许⼀个程序或者组件去控制另⼀个程序或者组件。MATLAB⽀持的组件技术分为以下3个内容: (1)在MATLAB下运⾏其他软件的组件;
(2)在其他程序下运⾏MATLAB的组件(包括MATLAB本⾝);
(3)将所需的MATLAB功能(通常有若⼲m和mex⽂件构成),利⽤MATLAB⾃⾝的COMBuilder编译成组件供其他程序使⽤。
MATLAB控制Excel⽂件操作属于第(1)种,也即将MATLAB作为⾃动化客户端,调
⽤Excel服务器完成⼀系列功能。MATLAB打开创建COM服务器的函数为actxserver。其基本⽤法如下:
actxserver('prodid');
其中prodid为COM 服务器的标识号。
使⽤MATLAB操作COM服务器时,可以使⽤get函数获得某个COM服务器的属性,使⽤invoke函数触发某项⽅法。
2. 利⽤MATLAB建⽴空⽩Microsoft Excel⽂档 下图为使⽤MATLAB建⽴的空⽩excel⽂档。
对表的任何操作,Excel服务器都提供了可以供MATLAB调⽤的属性或者⽅法。
3. 表中固定区域的选择⽅法
⽐如粘贴板中原有“MATLAB”⼏个字符,使⽤MATLAB将其粘贴⼊D6单元格:
4. 将MATLAB图形结果导⼊Excel
上⾯演⽰的内容都是⽂字结果和Excel之间的互操作,这⼀类操作完全可以通过MATLAB提供的xlswrite函数完成。下⾯介绍的是将MATLAB的图形结果导⼊Excel的⽅法。COM技术的⽅便之处就在于通过⼀种软件可以使⽤另外⼀种软件提供的⼏乎所有功能,⼤⼤提⾼了编程的灵活性。
下⾯的例⼦⾸先在MATLAB中绘制⼀幅图,然后通过COM技术将该图形导⼊到Excel中,位置为A1处(导⼊图形的左上⾓位于A1单元格)。如下图所⽰。
由于粘贴位置只能通过单元格位置确定,如果位置与实际有所偏差,可以继续对粘贴到Excel⽂件中的图形进⾏修饰,⽐如移位、旋转操作等,这⾥不再⼀⼀介绍。
5. MATLAB控制Excel绘图
Excel软件之所以被⼤量⽤于数据的统计,其中⼀个很重要的原因在于其有丰富的统计功能,并可以产⽣多种统计图表。当然,这些图表可以通过调⽤MATLAB提供的函数来实现。但对于⼀些简单的图表来说,完全可以交给Excel进⾏处理,下⾯⼀个例⼦使⽤Excel中A1-A5中的数据绘制折线图。如下图所⽰。
% ⽂件操作技巧
% 第7节 利⽤MATLAB创建Microsoft Excel⽂档%使⽤MATLAB建⽴⼀个空⽩excel⽂档he = actxserver('Excel.Application');
hw = he.Workbooks; % 或者使⽤hw = get(he, 'Workbooks');hworkbook = hw.Add; % 或者使⽤hworkbook = Add(hw);set(he, 'Visible', 1);% 激活第⼀个表
hsheets = get(hworkbook, 'Sheets');
hsheet = Item(hsheets, 1);%打开⽰例链接
web -browser http://www.ilovematlab.cn/thread-100435-1-2.html% 表中固定区域的选择⽅法
% 粘贴系统剪切板中的内容⾄Excel固定区域hrange = Range(hsheet, 'D6');hrange.Select;
% 假设系统剪切板中已经含有内容,粘贴⾄D6区域hsheet.Paste;
%将MATLAB图形结果导⼊Excel% ⾸先绘制⼀幅图ezplot('x^2 - y^2 = 1');% 将图形导⼊到剪切板中hgexport(gcf, '-clipboard');close all
% 选择粘贴区域
hrange = Range(hsheet, 'A1');hrange.Select;% 粘贴图形
hsheet.PasteSpecial;
% MATLAB控制Excel绘图% 设置绘图数据来源区域
hdata = Range(hsheet, 'A1:A5');% 新建图表
hchart = hsheet.Shapes.AddChart.Chart;% 设置绘图数据来源
SetSourceData(hchart, hdata);% 设置图表类型
hchart.ChartType = 'xlLine';
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务