首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Matlab编程技巧:导入Excel表格数据

  • 23-09-22 00:44
  • 3075
  • 8991
blog.csdn.net

在MBD(基于模型的设计)开发中,经常需要用matlab读取表格中的数据进行处理。因此,本文专门研究了一下matlab语言中用于处理Excel表格的两个函数,总结其用法、输入输出变量以及它们的适用场景。

文章目录

  • 1 函数
    • 1.1 xlsread
    • 1.2 readtable
  • 2 两个函数的比较
    • 2.1 xlsread
    • 2.2 readtable
  • 3 两个函数的不同的适用场景

1 函数

常用的读取Excel表格的函数有以下两个:

1.1 xlsread

语法为:[num,txt,raw] = xlsread(filename,sheet,xlRange)

假设有一表格文件“SourceData.xlsx”,工作表为“Sheet1”,如下图所示:
工作表“Sheet1”的内容
在Matlab命令行使用xlsread函数:

>> [num,txt,raw] = xlsread("SourceData.xlsx",'Sheet1');
>> raw

raw =

  5×4 cell 数组
    {'ColumnA'}    {'ColumnB'}    {'ColumnC'}    {'ColumnD'}
    {'Data1'  }    {'Data5'  }    {'Data9'  }    {'Data13' }
    {'Data2'  }    {'Data6'  }    {'Data10' }    {'Data14' }
    {'Data3'  }    {'Data7'  }    {'Data11' }    {'Data15' }
    {'Data4'  }    {'Data8'  }    {'Data12' }    {'Data16' }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

返回的结果raw是个5×4的元胞数组。另外两个返回值num,txt分别为数值和文本。

1.2 readtable

语法为:T = readtable(filename)

该函数不仅可以读取表格文件,而且可以读取文本文件等其他格式,但是要定义分隔符等。

在Matlab命令行使用readtable函数:

>> T = readtable('SourceData.xlsx','sheet','Sheet1');
>> T

T =

  4×4 table

    ColumnA    ColumnB    ColumnC     ColumnD 
    _______    _______    ________    ________

    'Data1'    'Data5'    'Data9'     'Data13'
    'Data2'    'Data6'    'Data10'    'Data14'
    'Data3'    'Data7'    'Data11'    'Data15'
    'Data4'    'Data8'    'Data12'    'Data16'
    
>> T.ColumnA

ans =

  4×1 cell 数组

    {'Data1'}
    {'Data2'}
    {'Data3'}
    {'Data4'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

返回的结果是4×4的table格式,table格式中把列标签单独提取出来,每一列的内容转化成了一个元胞数组。

2 两个函数的比较

两个函数返回的数据格式分别为Cell和Table,因此处理起来比较不同。

2.1 xlsread

元胞数组的处理比较简单,直接用{}就可以取出其中的数据。例如取出元胞数组中第二行第三列,代码如下:

>> raw{2,3}

ans =

    'Data9'
  • 1
  • 2
  • 3
  • 4
  • 5

2.2 readtable

Table格式则必须根据列标签取出。同样是第二行第三列,对于Table来说,应该是ColumnC列的第一个元素,所以应该表达为:

>> T.ColumnC{1}

ans =

    'Data9'
  • 1
  • 2
  • 3
  • 4
  • 5

3 两个函数的不同的适用场景

在MBD的开发过程中,经常用Matlab来处理Excel表格,也踩过了不少坑。所以选择合适的方法来编程非常重要。

先说结论,在目标Excel有列标签的时候,尽量使用后者,也就是readtable来进行表格文件读取的处理。在没有标签的情况下才用前者。原因如下:

1.可读性更好
如上文所说,xlsread的方式需要用raw{2,3}来取出数值,readtable用 T.ColumnC{1}。后者一眼就能看出是ColumnC标签下的第一个元素,而前者没办法直观的看出其含义。

2.可维护性好
在工作中,需要处理的表格往往根据需求会不断地调整。假如我有一个新的需求,需要在例子中的B列和C列中插入一列,标签为ColumnB1,如图所示
在这里插入图片描述
那么我之前写的Matlab脚本也需要随之更改。如果用的是xlsread的方式,则所有处理第三列的行为都要改成处理第四列,即raw{2,3}要改成raw{2,4};而table则完全不用为了适应列数变化而改变,因为列标签还是叫ColumnC。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/103647601"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top