美文网首页
Matlab与Excel

Matlab与Excel

作者: 聿东君 | 来源:发表于2020-01-21 19:22 被阅读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进行操作,除此以外,还有其他的方式。

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

相关文章

网友评论

      本文标题:Matlab与Excel

      本文链接:https://www.haomeiwen.com/subject/hndezctx.html