11 Matlab 读写 Excel 文件

上一个教程里面讲到了写函数和调用函数的问题。以前也说过,要尽量用搭积木的心态来写实验程序,也就是说我们尽量不关心某个具体功能的实现过程,而使用现有的函数拼搭完成程序。因此,调用函数的方法需要详细介绍一下。这里用读写 excel 文件的例子来介绍一下函数调用的具体方法。

心理学实验数据多采用 excel 表格形式保存或处理,因此,读或写 excel 文件是一个很重要的需求。Matlab 提供了两个函数分别用于读和写 excel 文件。

读 excel 文件

Matlab 提供了xlsread函数用于读 excel 文件。先help一下看看,这个函数是怎么用的。help 的结果就不贴图了,这里简单总结下基本用法:

函数调用形式是这样的:[ num, txt, raw ] = xlsread ( FILE, SHEET, RANGE )

xlsread 函数可以返回三个值,接受的参数也有多个, 比较常用的是上述三个参数。

简单解释下函数的返回值。一般来说,一个 excel 文件是包括两种类型的数据,一种是数字,另一种是文本。

xlsread 函数可以将这两种类型的数据分离,分别保存到 num 和 txt 变量中。它还可以将数字与文本放在一起,保存到 raw 变量中。

在调用函数的时候需要传递给函数三个参数,分别是文件名、工作表名以及表中的单元格范围。文件名是必须输入的参数,但是工作表名及单元格范围是可以不指定的,默认是第一个工作表的全部数据。

文件名参数可以是完整的路径,也可以只输入文件名(要求该文件在当前工作目录下)。下面给个例子。
我在桌面上新建了一个名为 " xlsread.xlsx " 的 excel 文件,内容截图如下:

xlsread.xlsx 文件内容

现在,我先将工作目录切换到桌面,然后,在命令行中,输入[num, txt, raw] = xlsread ( 'xlsread.xlsx')
Matlab 输出结果如下:

>> [num, txt, raw] = xlsread ( 'xlsread.xlsx')
num =

    11    21    31
    12    22    32
    13    23    33


txt =

  1×3 cell 数组

    {'标题1'}    {'标题2'}    {'标题3'}


raw =

  4×3 cell 数组

    {'标题1'}    {'标题2'}    {'标题3'}
    {[   11]}    {[   21]}    {[   31]}
    {[   12]}    {[   22]}    {[   32]}
    {[   13]}    {[   23]}    {[   33]}

变量 num 中的结果比较容易理解,它就是一个矩阵。txt 和 raw 的结果不同于以前介绍的内容。这种用大括号括起来的矩阵,称为元胞矩阵。具体的使用方法与规则,请大家自行搜索,以后涉及到了会再介绍。

假如,我们只需要文本内容,不需要其他的。前面也说过函数调用要原样调用。可以用 ~ 代替那些我们不想得到的返回值。因此,只取文本内容的函数调用如下:

>> [~, txt, ~] = xlsread ( 'xlsread.xlsx')
txt =

  1×3 cell 数组

    {'标题1'}    {'标题2'}    {'标题3'}

当然,函数调用的规则还有更多内容。比如,只需要获得第一个返回值的时候,其他返回值可以不写。更多的具体内容请大家自行搜索,不再详细介绍。大家还可以试试,如果不提供接受返回值的变量,会输出什么结果?比如,我在命令行中输入 xlsread ('xlsread.xlsx').

写 excel 文件

Matlab 内置一个名为 xlswrite 的函数用于写 excel 文件。经过 help 以后,可以了解它的基本用法:

status = xlswrite ( FILE, ARRAY, SHEET, RANGE )

返回值 status 只有两个值,如果写入成功则返回逻辑值 1, 否则返回逻辑值 0。

输入的参数有四个,分别为文件名,要写入的矩阵,工作表以及单元格范围。

xlsread.xlsx 文件中的内容为例,用 Matlab 将它写入到 xlswrite.xlsx 文件中。
先写入表头:

>> header = [{'标题1'}, {'标题2'}, {'标题3'}];
>> xlswrite('xlswrite.xlsx', header);

再写入每个标题下面的数据:

>> data = [11, 21, 31; 12, 22, 32; 13, 23, 33];
>> xlswrite('xlswrite.xlsx', data, 'Sheet1', 'A2');

注意,这里的数据写入范围只给出了从单元格A2开始,没有给出完整的范围,这也是可以的。更详细的用法,请参考 help 文档。

写到这里,我发现有关元胞矩阵的问题,还需要单独开一个帖子详细介绍。下次就更元胞矩阵的用法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容