前言
Excel是常用的表格软件,而Matlab是功能强大的数据处理软件,如果能将两者结合在一起,可以大大扩展用户的数据处理能力。下面将会讨论如何将他们结合在一起工作。
入门
最基础的将Excel和Matlab结合在一起的方式,是在Matlab上通过m语言操作Excel,其中最终要的是读取和写入功能,无论是读取还是写入,都是将Excel表格当做矩阵处理。
-
读取
完整语法:
[number,text,rawData]=xlread(fileName,sheetName,range);
% number:只包含数值成分的矩阵
% text:只包含字符串成分的矩阵
% rawData:完整矩阵
% fileName:工作簿(workbook)名称
% sheetName:工作表名称(sheet)名称
% range:选取范围
下面给出实例:
[number,text,rawData]=xlsread('test.xls',1,'A1:D5');
number
text
rawData
>> untitled
number =
NaN 8 9 16
1 NaN 10 15
2 7 NaN 14
3 6 11 NaN
4 5 12 13
text =
4×4 cell 数组
{'H' } {0×0 char} {0×0 char} {0×0 char}
{0×0 char} {'E' } {0×0 char} {0×0 char}
{0×0 char} {0×0 char} {'L' } {0×0 char}
{0×0 char} {0×0 char} {0×0 char} {'L' }
rawData =
5×4 cell 数组
{'H'} {[8]} {[ 9]} {[16]}
{[1]} {'E'} {[10]} {[15]}
{[2]} {[7]} {'L' } {[14]}
{[3]} {[6]} {[11]} {'L' }
{[4]} {[5]} {[12]} {[13]}
可以注意到,number是一个数值矩阵,text和rawData都是cell矩阵。
此外,也可以采用以下形式:
%-(1)-
number=xlsread(fileName);
% number:只得到一个数值矩阵
% 默认sheet1
% 默认读取全部内容
%-(2)-
[data,headerText]=xlsread(fileName,sheetName);
我们常常以第一行或第一列为栏位信息,这样可以通过(2)用data变量抓取数据,headerText抓取栏位信息。
- 写入
完整语法:
[status,message]=xlswrite(fileName,data,sheetName,range);
%status:返回操作结果,成功status==1,否则status==0
%message:返回操作名称
%data:输入的数据
同前面的读取一样,可以省略sheetName和range,默认写入sheet1和A1开头的空间。
进阶
前面介绍的方式很简单,就是从matlab对Excel进行操作,除此以外,还有其他的方式。
- Excel Link,可以从Excel调用Matlab的功能,这要求用户电脑中需要安装有Matlab。
- Excel Builder,可以经由Matlab的编译器,将m代码封装成Excel的加载项,类似插件,这样子用户电脑中不需要安装有Matlab。
- Excel COM Automation Server,将Excel看成一个自动化服务器的一项服务,然后可以在Matlab的环境下调用这项服务。
其他
% 生成nxn的幻方矩阵
magic(n);
% 生成nxn的随机矩阵
randn(n);
%比较字符串,不能采用'==',而是
strcmp(str1,str2)%相等返回1,否则返回0
%利用dos命令打开文件
dos(['start ' fileName])%注意start后面有一个空格,fileName前面有一个空格
%比较普通数组和元胞(cell)数组的区别
%普通数组,只能容纳一种类型的数据
a=[1 2 3 4]
a=[1,2,3,4]
a=1:4%1到4的整数
a=1:1:4%1到4,间隔为1
a=linspace(1,4,4)%1到4,总共4个元素
a(1)%a的第一个元素
%cell数组,可以同时容纳多种类型的数据,类似struct
a={1 'hello' 2}
a{1}%a的第一个元素
a=['Hello' 'Hi']
%注意,如果这么写的话,实际上是当做一个普通数组操作,会自动将两个字符串拆开成一个个字符,于是变成一个字符数组。
相关链接
张智星:MATLAB程式设计:进阶篇
网友评论