Matlab与Excel

2020-01-21  本文已影响0人  聿东君

前言

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进行操作,除此以外,还有其他的方式。

其他

% 生成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程式设计:进阶篇

上一篇 下一篇

猜你喜欢

热点阅读