Matlab学习笔记(7)——importdata和load函数

Matlab学习笔记(7)——importdata和load函数importdata 和 load 函数引言在使用 matlab 将数据导入到工作空间的时候 经常会使用到两个函数 一个是 importdata 函数 另一个是 load 函数 它们的使用方法和使用场景是太相同的 如果不太注意就可能会犯错误

importdata和load函数

引言

在使用matlab将数据导入到工作空间的时候,经常会使用到两个函数,一个是importdata函数,另一个是load函数,它们的使用方法和使用场景是太相同的,如果不太注意就可能会犯错误,在这里做简要的说明和记录。

importdata函数

下面是帮助文档提供的importdata函数的语法说明

importdata
Loda data from file


Syntax
A = importdata(filename)
A = importdata(‘-pastespecial’)
A = importdata(_,delimiterIn)
A = importdata(_,delimiterIn,headerlinesIn)
[A,delimiterOut,headerlinesOut] = importdata(_)











Description
– A = importdata(filename) loads data into array A.
– A = importdata(‘-pastespecial’) loads data from the system – clipboard rather than from a file.
– A = importdata(_,delimiterIn) interprets delimiterIn as the column separator in ASCII file, filename, or the clipboard data. You can use delimiterIn with any of the input arguments in the above syntaxes.
– A = importdata(_,delimiterIn,headerlinesIn) loads data from ASCII file, filename, or the clipboard, reading numeric data starting from line headerlinesIn+1.
– [A,delimiterOut,headerlinesOut] = importdata(_) additionally returns the detected delimiter character for the input ASCII file in delimiterOut and the detected number of header lines in headerlinesOut, using any of the input arguments in the previous syntaxes.










  • importdata函数主要特点是可以从文本文件中导入数据
  • 导入的数据可以是类似于表格形式的,可以含有表头即列名称,也可以不含表头。
  • 表头可以是文本形式的。
  • 除了官方文档说明的这些我发现,importdata导入的数据除了可以列名外还可以含有行名。导入时列名会被放在colheaders数组中,行名会被放在rowheaders数组中。
  • importdata还可以用来导入图片,传入图片的名称即可

Demo1:

%file0.txt %a1 a2 a3 a4 %1 3 5 3 %1 2 4 6 %7 5 4 8 %3 7 9 8 %2 3 7 4 >> impdata = importdata('file0.txt') impdata = data: [5x4 double] textdata: { 
   'a1' 'a2' 'a3' 'a4'} colheaders: { 
   'a1' 'a2' 'a3' 'a4'} >> class(impdata) ans = struct

可见importdata函数会将数据导入到一个结构体变量中,文本与数字分别导入到结构不同的属性中。数字部分导入到属性data中是一个矩阵,文本部分导入属性textdata中是一个细胞数组。如果textdata中的文本是列名则同时还会保存到属性colheaders中

Demo2

%file1.txt %b1 1 3 5 3 %b2 1 2 4 6 %b3 7 5 4 8 %b4 3 7 9 8 %b5 2 3 7 4 >> impdata = importdata('file1.txt') impdata = data: [5x4 double] textdata: { 
   5x1 cell} rowheaders: { 
   5x1 cell}

impdata.data内容
impdata.textdata内容
impdata.rowheaders内容
如果textdata中的文本是行名则同时还会保存到属性rowheaders中。注意不能将行名称放在最后一列,这样将不能正确导入。所以在进行分类时,不能将字符型的类标签放在最后一列,而是应该放在第一列。






Demo3

%file2.txt %a1 a2 a3 a4 %b1 b2 b3 b4 %1 3 5 3 %1 2 4 6 %7 5 4 8 %3 7 9 8 %2 3 7 4 >> impdata = importdata('file2.txt') impdata = data: [5x4 double] textdata: { 
   2x4 cell} colheaders: { 
   'b1' 'b2' 'b3' 'b4'}

impdata.textdata
impdata.colheaders
可以看到如果在头部文本超过两行,只有最后一行会作为列名分开读取,前面的列作为一个字符串,不分开,分隔符也不会被识别,而是当做普通字符。




Demo4

%a1 a2 a3 a4 %b1 1 3 5 %b2 1 2 4 %b3 7 5 4 %b4 3 7 9 %b5 2 3 7 >> impdata = importdata('file3.txt') impdata = data: [5x3 double] textdata: { 
   6x4 cell}

impdata.data
impdata.textdata

Demo5

%file4.txt %1 3 5 3 a1 %1 2 4 6 a2 %7 5 4 8 a3 %3 7 9 8 a4 %2 3 7 4 a5 >> impdata = importdata('file4.txt') impdata = '1 3 5 3 a1' '1 2 4 6 a2' '7 5 4 8 a3' '3 7 9 8 a4' '2 3 7 4 a5'

impdata

Demo6

%file5.txt %1 3 5 3 %1 2 4 6 %7 5 4 8 %3 7 9 8 %2 3 7 4 %a1 a2 a3 a4 >> impdata = importdata('file5.txt') impdata = 1 3 5 3 1 2 4 6 7 5 4 8 3 7 9 8 2 3 7 4

impdata
可见如果文本在最后一行,importdata将忽略它。

load函数

load函数一般将用来导入纯数字的文件,可以是文本格式的文件或者是matlab保存的mat格式的文件。

Demo

%file6.txt %1 3 5 3 %1 2 4 6 %7 5 4 8 %3 7 9 8 %2 3 7 4 >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> B = magic(5) B = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 >> save mydata A B >> clear >> load mydata >> load file6.txt

loadData

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203864.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:25
下一篇 2026年3月19日 下午9:26


相关推荐

  • 软件架构设计—软件架构概述[通俗易懂]

    软件架构设计—软件架构概述[通俗易懂]像学写文章一样,在学会字、词、句之后,就应上升到段落,就应追求文章的“布局谋篇”,这就是架构。通俗地讲,软件架构设计就是软件系统的“布局谋篇”。人们在软件工程实践中,逐步认识到了软件架构的重要性,从而开辟了一个崭新的研究领域。软件架构的研究内容主要涉及软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法等。软件设计人员学习软件架构知识旨在站在…

    2022年5月7日
    70
  • Byte数组转byte数组_java object对象转数组

    Byte数组转byte数组_java object对象转数组这里用到了java对象的序列化,即要求要转换成Byte数组的对象必须是可序列化的。java代码如下:/***对象转Byte数组**@paramobj*@return*@throwsException*/publicstaticbyte[]objectToBytes(Objectobj)throwsException{logger.debug(“object

    2025年10月20日
    5
  • 快速入门UML时序图「建议收藏」

    快速入门UML时序图「建议收藏」使用UML时序图重构代码使用UML时序图时序图是什么时序图的元素组合块(CombinedFragment)举例使用UML时序图最近,在重构项目中的老代码的时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱的纷繁的关系中,像是苏东坡诗中的那只高贵的乌鸦先生找不到落脚之处。披沙拣金,终于理出一点头绪,生怕忘了,赶紧记下来,又苦于没有好的方式去表达这些错杂的关系,蓦然发现,UML时序图是表达业…

    2022年6月29日
    37
  • Java:StringBuilder的基本使用

    Java:StringBuilder的基本使用概述StringBuilder表面看起来是用来拼接、处理字符串的一个工具类,但它的内部实现其实是处理字符序列。StringBuilder比String具有使用更加方便、运行效率更高的特点。StringBuffer是在StringBuilder的基础上多了线程安全(同步访问)。拼接、反序、替换、删减、插入append(),用于拼接,可接受字符串以及所有的基本数据类型的数据。StringBuildersb=newStringBuilder();sb.ap

    2022年7月17日
    16
  • vmware虚拟机联网设置(win10自带虚拟机安装win7)

    1.右键“我的电脑”,选择“管理”,双击进入2.找到“”服务“”这个选项,双击进入服务3.找到如下两个服务,将这两个服务启动4.打开VMware软件,打开虚拟机的编辑=>虚拟网络配置器5.点击更改配置6.配置如下图所示,配置完后,点击确定7.随便点击一台已有虚拟机,在右侧的弹框中,选择编辑虚拟机配置8.配置如下图所示,网络适配器=>选择自定义特定虚拟网=…

    2022年4月12日
    103
  • 编码的奥秘_生活中运用数字编码的例子有哪些

    编码的奥秘_生活中运用数字编码的例子有哪些摩尔斯电码:由萨谬尔摩尔斯发明观察可得E,T:只有一个滴或哒2^1I,A,N,M:是有两个滴答组成2^2以此类推三个滴答可以组成8个字母2^3四个滴答可以组成16个字母2^4这样就

    2022年8月4日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号