MATLAB绘图基础5:MATLAB数据导入

2024-09-08 03:12

本文主要是介绍MATLAB绘图基础5:MATLAB数据导入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。



5.MATLAB数据导入
5.1 从CSV文件读取数据
  • C S V {\rm CSV} CSV文件是一种纯文本文件,文件中的数据以逗号为分隔符进行字段分隔,每一行数据代表一条记录,每个字段在该行内通过逗号进行分隔;

  • C S V {\rm CSV} CSV文件可以使用任何文本编辑器创建和编辑,且可以被很多应用软件程序和编程语言读取和处理;

  • C S V {\rm CSV} CSV文件通常用于存储表格数据,如:电子表格数据、数据库导出数据等;

  • r e a d t a b l e {\rm readtable} readtable函数:

    • 作用: r e a d t a b l e {\rm readtable} readtable函数适用于读取包含混合数据类型,包括文本和数值的 C S V {\rm CSV} CSV文件,并将其导入为 M A T L A B {\rm MATLAB} MATLAB表格;

    • 列名: r e a d t a b l e {\rm readtable} readtable自动将 C S V {\rm CSV} CSV文件的第一行作为列名,便于理解和操作数据;

    • r e a d t a b l e {\rm readtable} readtable语法:

      % readtable语法:
      T = readtable(filename)
      T = readtable(filename, Name, Value)% T:表格数据结构,用于存储从文件中读取的数据;
      % filename:要读取的文件的路径和名称;
      % Name,Value:一些可选的名称-值对(即键值对),用于指定额外的选项,如跳过的行数等;
      
  • c s v r e a d {\rm csvread} csvread函数:

    • 作用: c s v r e a d {\rm csvread} csvread函数适用于读取仅包含数值数据的 C S V {\rm CSV} CSV文件,并将其导入为 M A T L A B {\rm MATLAB} MATLAB数值矩阵;

    • 数据类型:适用于纯数值数据,不支持文本列;

    • 列名:不支持列名,只导入数值部分;

    • 数据结构:导入的数据以数值矩阵的形式存储,适用于数值分析和计算;

    • c s v r e a d {\rm csvread} csvread语法:

      % csvread语法:
      M = csvread(filename)
      M = csvread(filename, R1, C1)
      M = csvread(filename, R1, C1, R2, C2)% M:包含从CSV文件中读取的数值数据的矩阵;
      % filename:要读取的CSV文件的路径和名称;
      % R1、C1、R2、C2:用于指定要读取的数据范围的行和列;
      
  • r e a d t a b l e {\rm readtable} readtable函数使用示例:

    % ch05_01.m
    clear;
    clc;% 创建要读取的文件路径;
    filePath = 'ch05_01.csv';     
    data1 = readtable(filePath);disp(data1(1:2,:));         % 显示前两行数据;
    disp('==============================================');
    disp(data1(1:5,:));         % 显示前五行数据;
    disp('==============================================');
    disp(data1(:,:));           % 显示整个文件数据;
    
    % ch05_01.m运行结果:Name        Age    Height    Weight___________    ___    ______    ______{'Willard'}    20      172        60  {'Chen'   }    18      160        45  ==============================================Name        Age    Height    Weight___________    ___    ______    ______{'Willard'}    20      172        60  {'Chen'   }    18      160        45  {'Zhang'  }    18      165        46  {'LiuQB'  }    28      170        55  {'Zhou'   }    19      166        46  ==============================================Name        Age    Height    Weight___________    ___    ______    ______{'Willard'}    20      172        60  {'Chen'   }    18      160        45  {'Zhang'  }    18      165        46  {'LiuQB'  }    28      170        55  {'Zhou'   }    19      166        46 
    
  • c s v r e a d {\rm csvread} csvread函数使用示例:

    % ch05_02.m
    clear;
    clc;% 创建要读取的文件路径;
    filePath = 'ch05_02.csv';     % 注:字符串读取不了,如:姓名列(name):Willard、Chen这些数据读取不了;
    data2 = csvread(filePath,1,1);      % 从第2行第2列开始读取数据;   disp(data2);                     
    
    % ch05_02.m运行结果:20   172    6018   160    4518   165    4628   170    5519   166    46
    
5.2 从Excel文件读取数据
  • M A T L A B {\rm MATLAB} MATLAB中,可以使用 x l s r e a d {\rm xlsread} xlsread函数和 r e a d t a b l e {\rm readtable} readtable函数从 E x c e l {\rm Excel} Excel文件导入数据;

  • x l s r e a d {\rm xlsread} xlsread函数特点:

    • 返回一个数值矩阵,不返回列标签;
    • 主要用于读取 E x c e l {\rm Excel} Excel文件中的数值数据,不擅长读取文本数据;
    • 通常需要指定要读取的数据范围,包括工作表名称、索引及数据范围;
    • 通常需要额外的处理来处理数据类型和列标签;
  • x l s r e a d {\rm xlsread} xlsread函数语法:

    % xlsread函数语法:
    [num, txt, raw] = xlsread(filename)
    [num, txt, raw] = xlsread(filename, sheet)
    [num, txt, raw] = xlsread(filename, sheet, range)% num:一个包含数值数据的矩阵;
    % txt:一个包含文本数据的单元格数组;
    % raw:一个包含原始数据的混合单元格数组;
    % filename:要读取的Excel文件的路径和名称;
    % sheet:要读取的工作表的名称和索引;
    % range:要读取的数据范围;
    
  • r e a d t a b l e {\rm readtable} readtable函数使用示例:

    % ch05_03.m
    clear;
    clc;% 指定数据文件路径
    filePath = 'ch05_03.xls';% 指定要读取的数据范围(第1列至第6列,第4行至第23行数据)
    data_range = 'A4:F23';% 使用readtable函数读取指定范围的数据
    data = readtable(filePath, 'Range', data_range);% 显示数据
    disp(data);
    
    % ch05_03.m运行结果:Var1          Var2       Var3     Var4     Var5     Var6 __________    __________    _____    _____    _____    _____{'2018年'}    1.3954e+05    71351    68187    83137    56401{'2017年'}    1.3901e+05    71137    67871    81347    57661{'2016年'}    1.3827e+05    70815    67456    79298    58973{'2015年'}    1.3746e+05    70414    67048    77116    60346{'2014年'}    1.3678e+05    70079    66703    74916    61866{'2013年'}    1.3607e+05    69728    66344    73111    62961{'2012年'}     1.354e+05    69395    66009    71182    64222{'2011年'}    1.3474e+05    69068    65667    69079    65656{'2010年'}    1.3409e+05    68748    65343    66978    67113{'2009年'}    1.3345e+05    68647    64803    64512    68938{'2008年'}     1.328e+05    68357    64445    62403    70399{'2007年'}    1.3213e+05    68048    64081    60633    71496{'2006年'}    1.3145e+05    67728    63720    58288    73160{'2005年'}    1.3076e+05    67375    63381    56212    74544{'2004年'}    1.2999e+05    66976    63012    54283    75705{'2003年'}    1.2923e+05    66556    62671    52376    76851{'2002年'}    1.2845e+05    66115    62338    50212    78241{'2001年'}    1.2763e+05    65672    61955    48064    79563{'2000年'}    1.2674e+05    65437    61306    45906    80837{'1999年'}    1.2579e+05    64692    61094    43748    82038
    
  • x l s r e a d {\rm xlsread} xlsread函数使用示例:

    % ch05_04.m
    clear;
    clc;% 指定数据文件路径
    filePath = 'ch05_04.xls';% 指定要读取的数据范围(第1列至第6列,第4行至第23行数据)
    data_range = 'A4:F23';% 使用xlsread函数读取数据
    % num:包含从Excel文件中读取的数值数据;
    % txt:包含文本数据;
    % raw:包含原始数据,包括数值和文本数据;
    [num, txt, raw] = xlsread(filePath, data_range);
    disp('Excel文件中的数值数据:');
    disp(num);disp('Excel文件中的文本数据:');
    disp(txt);disp('Excel文件中的原始数据:');
    disp(raw);
    
    % ch05_04.m运行结果:
    Excel文件中的数值数据:139538       71351       68187       83137       56401139008       71137       67871       81347       57661138271       70815       67456       79298       58973137462       70414       67048       77116       60346136782       70079       66703       74916       61866136072       69728       66344       73111       62961135404       69395       66009       71182       64222134735       69068       65667       69079       65656134091       68748       65343       66978       67113133450       68647       64803       64512       68938132802       68357       64445       62403       70399132129       68048       64081       60633       71496131448       67728       63720       58288       73160130756       67375       63381       56212       74544129988       66976       63012       54283       75705129227       66556       62671       52376       76851128453       66115       62338       50212       78241127627       65672       61955       48064       79563126743       65437       61306       45906       80837125786       64692       61094       43748       82038Excel文件中的文本数据:{'2018年'}{'2017年'}{'2016年'}{'2015年'}{'2014年'}{'2013年'}{'2012年'}{'2011年'}{'2010年'}{'2009年'}{'2008年'}{'2007年'}{'2006年'}{'2005年'}{'2004年'}{'2003年'}{'2002年'}{'2001年'}{'2000年'}{'1999年'}Excel文件中的原始数据:{'2018年'}    {[139538]}    {[71351]}    {[68187]}    {[83137]}    {[56401]}{'2017年'}    {[139008]}    {[71137]}    {[67871]}    {[81347]}    {[57661]}{'2016年'}    {[138271]}    {[70815]}    {[67456]}    {[79298]}    {[58973]}{'2015年'}    {[137462]}    {[70414]}    {[67048]}    {[77116]}    {[60346]}{'2014年'}    {[136782]}    {[70079]}    {[66703]}    {[74916]}    {[61866]}{'2013年'}    {[136072]}    {[69728]}    {[66344]}    {[73111]}    {[62961]}{'2012年'}    {[135404]}    {[69395]}    {[66009]}    {[71182]}    {[64222]}{'2011年'}    {[134735]}    {[69068]}    {[65667]}    {[69079]}    {[65656]}{'2010年'}    {[134091]}    {[68748]}    {[65343]}    {[66978]}    {[67113]}{'2009年'}    {[133450]}    {[68647]}    {[64803]}    {[64512]}    {[68938]}{'2008年'}    {[132802]}    {[68357]}    {[64445]}    {[62403]}    {[70399]}{'2007年'}    {[132129]}    {[68048]}    {[64081]}    {[60633]}    {[71496]}{'2006年'}    {[131448]}    {[67728]}    {[63720]}    {[58288]}    {[73160]}{'2005年'}    {[130756]}    {[67375]}    {[63381]}    {[56212]}    {[74544]}{'2004年'}    {[129988]}    {[66976]}    {[63012]}    {[54283]}    {[75705]}{'2003年'}    {[129227]}    {[66556]}    {[62671]}    {[52376]}    {[76851]}{'2002年'}    {[128453]}    {[66115]}    {[62338]}    {[50212]}    {[78241]}{'2001年'}    {[127627]}    {[65672]}    {[61955]}    {[48064]}    {[79563]}{'2000年'}    {[126743]}    {[65437]}    {[61306]}    {[45906]}    {[80837]}{'1999年'}    {[125786]}    {[64692]}    {[61094]}    {[43748]}    {[82038]}
    
5.3 从JSON文件读取数据
  • J S O N ( J a v a S c r i p t O b j e c t N o t a t i o n ) {\rm JSON(JavaScript\ Object\ Notation)} JSON(JavaScript Object Notation)文件以文本形式表示结构化数据;

  • J S O N {\rm JSON} JSON结构:

    // JSON示例:
    [{"name": "Willard","Age": 20,"Height": 170,"Weight": 60},{"name": "Chen","Age": 18,"Height": 160,"Weight": 48}
    ]// 1.大括号{}表示一个JSON对象,包含键值对的集合,每个键值对由一个键(key)和一个关联值(value)组成,
    // 	 键和值间用冒号分隔,键值对间用逗号分隔,JSON对象用于表示具有命名字段的数据;// 2.中括号[]表示一个JSON数组,包含值的有序集合,JSON数组允许用户将多个值按一定的顺序进行组织;
    //   数组中的每个值可以是一个标量或另一个JSON对象或JSON数组,JSON数组通常用于表示多个相似的数据项;
    
  • 读取 J S O N {\rm JSON} JSON文件数据示例:

    % ch05_05.m
    clear;
    clc;% 读取JSON文件并存储在jsonStr变量中;
    jsonStr = fileread('ch05_05.json');% 使用jsondecode函数将JSON字符串解码为MATLAB结构体;
    jsonData = jsondecode(jsonStr);% 访问和操作解码后的数据;
    for i = 1:length(jsonData)name = jsonData(i).Name;age = jsonData(i).Age;height = jsonData(i).Height;weight = jsonData(i).Weight;fprintf('Name: %s\n',name);fprintf('Age: %d, Height: %d, Weight: %d\n\n',age, height, weight);
    end
    
    % ch05_05.m运行结果:
    Name: Willard
    Age: 20, Height: 170, Weight: 60Name: Chen
    Age: 18, Height: 160, Weight: 46Name: Zhang
    Age: 18, Height: 166, Weight: 48
    
    // ch05_05.json文件内容
    [{"Name": "Willard","Age": 20,"Height": 170,"Weight": 60}, {"Name": "Chen","Age": 18,"Height": 160,"Weight": 46},{"Name": "Zhang","Age": 18,"Height": 166,"Weight": 48}
    ]
    
5.4 从XML文件读取数据
  • X M L ( E x t e n s i b l e M a r k u p L a n g u a g e ) {\rm XML(Extensible\ Markup\ Language)} XML(Extensible Markup Language):一种用于存储和交换数据的文本格式;

  • X M L {\rm XML} XML是一种标记语言,用于描述数据的结构和内容, X M L {\rm XML} XML文件包含各种数据,这些数据使用标签和元素来标识和组织,每个 X M L {\rm XML} XML元素都由一个开始标签、元素内容和结束标签组成;

  • X M L {\rm XML} XML语法示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <studentInfoData><Name name="Willard"><Age>20</Age><Height>172</Height><Weight>60</Weight></Name><Name name="Chen"><Age>18</Age><Height>156</Height><Weight>46</Weight></Name>
    </studentInfoData>
    
  • 读取 X M L {\rm XML} XML数据示例:

    % ch05_06.m
    clear;
    clc;% 读取XML文件
    xmlFile = 'ch05_06.xml';
    % 使用xmlread函数解析XML文件
    doc = xmlread(xmlFile);% 获取根元素(AirQualityData)
    root = doc.getDocumentElement();% 获取City元素的节点列表
    cityNodes = root.getElementsByTagName('City');% 初始化一个结构数组,用于存储城市数据
    cityData = struct();% 遍历每个City元素
    for i = 0:cityNodes.getLength - 1cityNode = cityNodes.item(i);% 获取城市的名称属性cityName = char(cityNode.getAttribute('name'));% 获取Year、PM25_Concentration、PM10_Concentration、SO2_Concentration和CO_Concentration的值year = str2double(cityNode.getElementsByTagName('Year').item(0).getTextContent());pm25 = str2double(cityNode.getElementsByTagName('PM25_Concentration').item(0).getTextContent());pm10 = str2double(cityNode.getElementsByTagName('PM10_Concentration').item(0).getTextContent());so2 = str2double(cityNode.getElementsByTagName('SO2_Concentration').item(0).getTextContent());co = str2double(cityNode.getElementsByTagName('CO_Concentration').item(0).getTextContent());% 存储城市数据到结构数组cityData(i+1).name = cityName;cityData(i+1).year = year;cityData(i+1).PM25_Concentration = pm25;cityData(i+1).PM10_Concentration = pm10;cityData(i+1).SO2_Concentration = so2;cityData(i+1).CO_Concentration = co;
    end
    
    <?xml version="1.0" encoding="UTF-8"?>
    <AirQualityData><City name="北京"><Year>2018</Year><PM25_Concentration>25</PM25_Concentration><PM10_Concentration>40</PM10_Concentration><SO2_Concentration>10</SO2_Concentration><CO_Concentration>5</CO_Concentration></City><City name="上海"><Year>2018</Year><PM25_Concentration>35</PM25_Concentration><PM10_Concentration>50</PM10_Concentration><SO2_Concentration>15</SO2_Concentration><CO_Concentration>8</CO_Concentration></City><City name="广州"><Year>2018</Year><PM25_Concentration>45</PM25_Concentration><PM10_Concentration>60</PM10_Concentration><SO2_Concentration>20</SO2_Concentration><CO_Concentration>10</CO_Concentration></City>
    </AirQualityData>
    
5.5 从mat文件读取数据
  • m a t {\rm mat} mat M A T L A B {\rm MATLAB} MATLAB基于二进制的专有的数据文件格式,用来保存 M A T L A B {\rm MATLAB} MATLAB中的数据,包括矩阵、数组、字符串等;

  • m a t {\rm mat} mat文件的主要特点包括:

    • 可以方便地保存 M A T L A B {\rm MATLAB} MATLAB的任意数据,包括多维数组、结构数组等复杂数据;
    • 数据以压缩的二进制格式保存,文件体积小;
    • 通过 m a t {\rm mat} mat文件可以地在 M A T L A B {\rm MATLAB} MATLAB和其他语言间交换数据;
    • 使用 M A T L A B {\rm MATLAB} MATLAB s a v e {\rm save} save函数和 l o a d {\rm load} load函数可以方便地读写 m a t {\rm mat} mat文件;
  • 读取 m a t {\rm mat} mat数据使用示例:

    % ch05_07.m
    clear;
    clc;% 生成8x8的随机数据矩阵并存储在变量data中;
    data = rand(8);
    save('ch05_07.mat','data');clear;% 使用load函数从ch05_07.mat文件加载数据;
    load('ch05_07.mat');% 将加载的数据存储在newdata变量中;
    newdata = data;% 使用plot函数绘制newdata中的数据;
    plot(newdata);
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    xlabel('x');
    ylabel('y');% 返回每一列的最大值;
    msg = sprintf('最大值:%f',max(newdata));
    disp(msg);% 将newdata变量保存到newdata.mat文件中;
    save('newdata.mat','newdata');
    

    1

这篇关于MATLAB绘图基础5:MATLAB数据导入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146948

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]