Main Content

导入文本文件

MATLAB® 能够读写分隔文本文件和格式化文本文件(包括 .csv.txt 文件)中的数值数据和非数值数据。文本文件通常包含数值和文本数据以及变量名称和行名称的混合。您可以在 MATLAB 中将这些数据表示为表、时间表、矩阵、元胞数组或字符串数组。

以编程方式或以交互方式从文本文件导入数据。以编程方式导入以使用定制的导入函数,并进一步控制如何使用导入选项导入数据。以交互方式导入,以使用导入工具及其用户界面。

以表的形式导入数据

如果您的文本文件包含表格数据,您可以以表的形式导入数据。table 由包含相同类型数据行的列向变量组成。表中的每个变量可以保留不同数据类型和大小,但每个变量必须有相同的行数。有关表的详细信息,请参阅创建表并为其分配数据

使用 readtable 函数并指定文件名,从文本文件中将表格数据导入表中。例如,根据示例文件 airlinesmall.csv 创建一个表。

T = readtable('airlinesmall.csv');

显示表的前五行和前五列。

T(1:5,1:5)
ans =

  5×5 table

    Year    Month    DayofMonth    DayOfWeek    DepTime 
    ____    _____    __________    _________    ________

    1987     10          21            3        {'642' }
    1987     10          26            1        {'1021'}
    1987     10          23            5        {'2055'}
    1987     10          23            5        {'1332'}
    1987     10          22            4        {'629' }

将数据以时间表形式导入

如果文本文件包含表格数据,其中每行都与时间相关联,则可以将数据以时间表的形式导入。与表一样,时间表允许您存储表格数据变量,这些变量可以有不同数据类型和大小,只要它们有相同的行数。此外,时间表还提供特定于时间的函数,以便使用一个或多个时间表中的时间戳数据执行对齐、组合和计算。有关时间表的详细信息,请参阅创建时间表

使用 readtimetable 函数将表格数据从文本文件导入时间表。例如,从示例文件 outages.csv 创建一个时间表。

TT = readtimetable('outages.csv');

显示时间表的前五行和前五列。

TT(1:5,1:5)
ans =

  5×5 timetable

       OutageTime          Region         Loss     Customers     RestorationTime            Cause       
    ________________    _____________    ______    __________    ________________    ___________________

    2002-02-01 12:18    {'SouthWest'}    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'   }
    2003-01-23 00:49    {'SouthEast'}    530.14    2.1204e+05                 NaT    {'winter storm'   }
    2003-02-07 21:15    {'SouthEast'}     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'   }
    2004-04-06 05:44    {'West'     }    434.81    3.4037e+05    2004-04-06 06:10    {'equipment fault'}
    2002-03-16 06:18    {'MidWest'  }    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'   }

以矩阵的形式导入数据

如果您的文本文件包含统一的数据(均为同一类型),您可以将数据以矩阵的形式导入。通过将数据导入矩阵中,您可以处理具有最基本格式的数组。

使用 readmatrix 将表格数据从文本文件导入矩阵。例如,从示例文件 basic_matrix.txt 中将数据导入矩阵中。

M = readmatrix('basic_matrix.txt')
M = 5×4

     6     8     3     1
     5     4     7     3
     1     6     7    10
     4     2     8     2
     2     7     5     9

将数据以元胞数组的形式导入

元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。

您可以使用 readcell 将非均匀数据(每列有不同类型)从文本文件导入元胞数组。例如,显示 basic_cell.txt 的内容,然后将混合数据导入元胞数组。

type basic_cell.txt
1,2,3
hello,world,NaN
10-Oct-2018 10:27:56,1,
C = readcell('basic_cell.txt')
C=3×3 cell array
    {[                   1]}    {[    2]}    {[        3]}
    {'hello'               }    {'world'}    {[      NaN]}
    {[10-Oct-2018 10:27:56]}    {[    1]}    {1x1 missing}
您也可以使用 textscan 函数和低级 I/O 工作流将格式化数据从文本文件导入元胞数组。低级 I/O 工作流允许对导入数据进行最大程度地的控制。对于大多数工作流来说,这种程度的控制是不必要的。有关使用低级 I/O 导入文本数据的详细信息,请参阅使用低级 I/O 导入文本数据文件

将数据作为字符串数组导入

如果您的文本文件包含纯文本行,您可以将 MATLAB 中的纯文本表示为字符串数组。字符串数组可存储文本片段,并提供一组用于将文本按数据进行处理的函数。例如,您可以对字符串数组进行索引、重构和进行串联,就像处理任何其他类型的数组一样。

使用 readlines 将文本文件中的纯文本行导入字符串数组。例如,从示例文本文件 badpoem.txt 创建一个字符串数组。由于文本文件有四行纯文本,因此该函数创建了一个 4×1 字符串数组。

lines = readlines("badpoem.txt")
lines = 4x1 string
    "Oranges and lemons,"
    "Pineapples and tea."
    "Orangutans and monkeys,"
    "Dragonflys or fleas."

使用导入选项导入数据以进行更多控制

导入表格数据有时需要对导入过程进行更多控制。要自定义导入过程,您可以创建导入选项对象。该对象具有您可以根据自己的导入需求进行调整的属性。例如,您可以更改变量的数据类型或仅导入变量的子集。有关导入选项的详细信息,请参阅 detectImportOptions

以交互方式导入数据

如果您更喜欢使用用户界面,您可以使用导入工具以交互方式将数据导入表或其他数据类型。

要打开导入工具,请在主页选项卡的变量部分中,点击导入数据 。或者,在当前文件夹浏览器中右键点击文件名,然后选择导入数据。然后,选择要导入的文件。使用导入工具窗口,设置导入选项,然后点击导入所选内容,将数据导入 MATLAB。有关详细信息,请参阅使用导入工具读取文本文件数据

grades.txt is a sample file used to portray the Import Tool.

另请参阅

| | | | | | | |

相关主题