分享

MATLAB基础速查---数据分析之导入

 Jason_Cheng3hi 2024-03-21 发布于江苏

据分析是建模前的第一步,数据集的质量直接决定了所建立模型的质量。数据的分析包含了数据的导入和导出、访问大型文件和大样本数据集、数据的预处理、数据的分析四个维度。接下的文章将详细为大家剖析在MATLAB中,如何对数据进行处理和分析,由于篇幅限制,因此本篇文章中将首先介绍数据的导入和导出

在特定的领域内,往往一次性需要处理的数据可达万级及以上,此时就需要用到本小节所介绍的内容。针对不同的领域需求,所使用的数据格式也存在不同,因此需要针对于不同的数据类型进行介绍。

1 文本文件

常见的文本文件为“.xls”、“.xlsx”、“.csv”和“.txt”几种,针对于文本文件的导入方式大体上可以分为两类:

Ⅰ. 通过函数导入

以下代码中的案例都是MATLAB中自带的数据集,有兴趣的同学可以用自己的数据集做尝试。

1.将文件以表格式写入MATLAB % 函数:readtable % 语法 ① T = readtable(filename) 通过从文件中读取列向数据来创建表 ② T = readtable(filename,opts) 使用导入选项 opts 创建表 ③ T = readtable(___,Name,Value) 基于文件创建一个表,并通过一个或多个名称-值对组参数指定其他选项 2.将文件以时间表格式写入MATLAB % 函数:readtimetable % 语法 ① TT = readtimetable(filename) 通过从文件中读取列向数据来创建时间表 ② TT = readtimetable(filename,opts) 使用导入选项 opts ③ TT = readtimetable(___,Name,Value) 基于文件创建一个时间表,并通过一个或多个名称-值对组参数指定其他选项
3.将文件以元胞格式写入MATLAB % 函数:readcell % 语法 ① C = readcell(filename) 通过从文件中读取列向数据来创建元胞数组 ② C = readcell(filename,opts) 使用导入选项 opts ③ C = readcell(___,Name,Value) 基于文件创建元胞数组,并通过一个或多个名称-值对组参数指定其他选项
4.将文件以矩阵格式写入MATLAB % 函数:readmatrix % 语法 ① A = readmatrix(filename) 通过从文件中读取列向数据来创建数组 ② A = readmatrix(filename,opts) 使用导入选项 opts ③ A = readmatrix(___,Name,Value) 基于文件创建一个数组,并通过一个或多个名称-值对组参数指定其他选项
5.将文件以文本格式写入MATLAB % 函数:readlines % 语法 ① S = readlines(filename)      通过读取一个包含 N 行的文件创建一个 N×1 字符串数组 ② S = readlines(filename,Name,Value) 基于文件创建一个字符串数组,并通过一个或多个名称-值对组参数指定其他选项  6.此外,还有一个“importdata”函数可以不区分数据类型,将数据导入MATLAB中 可以参考以下文档:https://www./help/releases/R2022b/matlab/ref/importdata.html
图片
图片

图片

Ⅱ . 通过工具导入 

在MATLAB界面中,设有交互式工具导入窗口:

①点击下图红框按钮,选择你要打开的文件选择导入

图片

②导入后可以进入下面的界面,在该界面中有以下几个方面值得注意:

图片
图中红色框标记内容功能:1.选择对导入文件的分割方式,当前案例中默认是等宽分隔,也可以点击“分隔文件”选择以符号分隔;
图片
2.选择导入文本的数据范围,默认为全部导入;在变量名称行中,可以指定以哪一行作为整个文件的标签行。3.在输出类型中可以指定你想将文件以哪种数据类型导入MATLAB中;对于文本类型数据,有专门的的文本选项
图片图片
4.当文本中存在无法导入的单元格时,MATLAB会将其默认替换为NaN;我们也可以通过选项将其所在的行或列删除;此外除了无法导入的单元格以外,可能还会存在空单元格;最后除了NaNy以外,也可以手动修改为指定值。
图片
图片
5.前面四步设定完后,选择导入数据,即可将文件内容转为设定好的数据导入;

图片

以上内容为将本地数据导入MATLAB中,接下来就是将MATLAB中的变量写入本地的文件中。在MATLAB中产生的数据都是“.mat”格式的文件,此时如果有需求将这些数据导出就需要利用到MATLAB中的导出文件函数。与前面的读取文件函数相对应的,写入函数的相关信息如下所示:
1.将表文件写入本地  % 函数:writetable  % 语法    ① writetable(T)      将表T写入逗号分隔的文本文件,如不指定格式,默认为txt文件格式    ② writetable(T,filename)      写入具有filename指定的名称和扩展名的文件    ③ writetable(___,Name,Value)      通过一个或多个Name,Value对组参数指定的其他选项将表写入文件中,并且可以包含以前语法中的任何输入参数
2.将时间表写入本地 % 函数:writetimetable % 语法 ① writetimetable(TT)      时间表TT写入以逗号分隔的文本文件,如不指定格式,默认为txt文件格式 ② writetimetable(TT,filename)      写入具有filename指定的名称和扩展名的文件 ③ writetimetable(___,Name,Value)      在包括上述语法中任意输入参数的同时,还可通过一个或多个Name,Value对组参数指定其他选项
3.将元胞数字写入本地 % 函数:writecell % 语法    ① writecell(C)      将元胞数组C写入以逗号分隔的文本文件,如不指定格式,默认为txt文件格式 ② writecell(C,filename)      写入具有filename指定的名称和扩展名的文件    ③ writecell(___,Name,Value)      在包括上述语法中任意输入参数的同时,还可通过一个或多个Name,Value对组参数指定其他选项
4.将矩阵写入本地  % 函数:writematrix % 语法    ① writematrix(A)      将同构数组A写入以逗号分隔的文本文件,如不指定格式,默认为txt文件格式 ② writematrix(A,filename)      写入具有filename指定的名称和扩展名的文件 ③ writematrix(___,Name,Value) 在包括上述语法中任意输入参数的同时,还可通过一个或多个Name,Value对组参数指定其他选项
5.将文本写入本地 % 函数:writelines % 语法    ① writelines(lines,filename)      将指定的文本写入名为的纯文本文件,如不指定格式,默认为txt文件格式 ② writelines(lines,filename,Name=Value)     使用一个或多个名称-值参数指定选项

图片

由以上案例可以发现,我们所保存的文件都以指定的格式存储到了当前目录下。

2 图像

在MATLAB中支持JPEG、TIFF、PNG以及其他常见格式的图像文件,了解如何导入导出图像文件对图神经网络模型非常重要,在MATLAB中,针对图像的导入导出函数十分简洁明了。

函数
功能
imfinfo

有关图形文件的信息

imread
从图形文件读取图像
imwrite
将图像写入图形文件
Ⅰ.imfinfo
%% imfinfo函数% 语法  info = imfinfo(filename)  返回一个结构体,该结构体的字段包含有关图形文件filename中的图像的信息  info = imfinfo(filename,fmt)  在MATLAB找不到名为filename的文件时另外查找名为filename.fmt的文件;  “fmt”表示的是图片的格式,如png、jpg等
图片
图片
Ⅱ.imread
%% imread函数% 语法  A = imread(filename)  从filename指定的文件读取图像,并从文件内容推断出其格式。如果filename为多图像文件,则imread读取该文件中的第一个图像  A = imread(filename,fmt)  指定具有fmt指示的标准文件扩展名的文件的格式。如果imread找不到具有filename指定的名称的文件,则会查找名为filename.fmt的文件  A = imread(___,idx)  从多图像文件读取指定的图像  A = imread(___,Name,Value)  可在前面语法中的任意输入参数之外使用一个或多个名称-值对组参数来指定格式特定的选项  [A,map] = imread(___)  将filename中的索引图像读入A,并将其关联的颜色图读入map。图像文件中的颜色图值会自动重新调整到范围[0,1]中  [A,map,transparency] = imread(___)  另外还返回图像透明度。此语法仅适用于PNG、CUR和ICO文件。对于PNG文件,如果存在alpha通道,transparency会返回该alpha通道
图片
图片

图片

大家可以关注一下在MATLAB中存储的图片的信息:

图片

Ⅲ.imwrite
%% imwrite函数% 语法 imwrite(A,filename)  将图像数据A写入filename指定的文件,并从扩展名推断出文件格式 imwrite(A,map,filename)  将A中的索引图像及其关联的颜色图map写入由filename指定的文件 imwrite(___,fmt)  以fmt指定的格式写入图像,无论filename中的文件扩展名如何 imwrite(___,Name,Value)  使用一个或多个名称-值参数,以指定GIF、HDF、JPEG、PBM、PGM、PNG、PPM和TIFF文件输出的其他参数
在前一个案例中,我们可以看到在MATLAB中图片的存储是以数组的形式存在的,因此要将MATLAB中的数组写入本地保存为图片,相应的操作也非常简单,只需要调用imwrite函数,注意输出参数中的图像格式即可。

如下图所示,写入完成后会在当前目录下保存相应的图片:

图片
3 视频音频

由于视频和音频很难通过公众号文章演示,因此这里只将相应的函数进行介绍,有需求或兴趣的同学可以自行查阅文档进行试验,官方文档链接如下:

https://www./help/releases/R2022b/matlab/audio-and-video.html
图片
图片

本期内容对于在MATLAB中如何导入和导出文本、图像和视频音频文件,这几种数据类型基本囊括了我们科研工作中99%的数据类型。

但是在特定情况下,我们所要处理的数据集和文件集可能存在以下情况:

①现有内存无法容纳;

②需要很长处理时间的文件;

③许多小型文件的集合。

此时无法通过单一的方法完成,或者所需时间特别久,因此下一期将会对型文件集合和大型数据集的处理进行介绍。最后,码字不易,大家动动小手点个赞吧~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多