导入文本文件
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。有关详细信息,请参阅使用导入工具读取文本文件数据。
另请参阅
导入工具 | readtable
| table
| readtimetable
| readmatrix
| readcell
| readlines
| textscan
| detectImportOptions