主要内容

使用导入工具读取文本文件数据

通过以交互方式选择数据,从文本文件中导入数据。也可以使用导入工具的生成代码功能,对多个文本文件重复此导入操作。

以交互方式选择数据

以下示例演示如何使用导入工具导入具有列标题和数值数据的文本文件中的数据。示例中的文件 grades.txt 包含以下数据:

   John    Ann     Mark    Rob
   88.4    91.5    89.2    77.3
   83.2    88.0    67.8    91.0
   77.8    76.3    None    92.5
   92.1    96.4    81.2    84.6

要创建文件,请使用任意文本编辑器复制并粘贴数据。

主页选项卡上的变量部分中,点击导入数据 。或者,在“文件”面板中右键点击文件名,然后选择导入数据。此时将打开导入工具。

The Import Tool displays the contents of the grades.txt data file as a table containing four columns and five rows with one missing value

导入工具识别出 grades.txt 为等宽文件。在导入的变量部分中,选择导入数据的方式。

导入的变量类型导入数据的方式
将所选数据导入为表。
时间表将所选数据导入为时间表。
列向量将所选数据的每一列导入为单个 m×1 向量。
数值矩阵将所选数据导入为 m×n 数值数组。
字符串数组将所选数据导入为包含文本的字符串数组。
元胞数组将所选数据导入为可包含多种数据类型的元胞数组,例如数值数据和文本。

分隔符选项下,可指定导入工具是使用句点还是逗号作为数值的小数分隔符。

The delimiter options are treat multiple delimiters as one, a period decimal separator, or a comma decimal separator

双击变量名称进行重命名。

The cursor is at the end of the variable name Ann in the header of table column B

此外,还可以使用所选内容部分中的变量名称行框,来选择希望导入工具将其用作变量名称的文本文件行。

导入工具会突出显示无法导入的单元格。无法导入的单元格是指所包含的数据无法按为该列指定的格式导入的单元格。在此示例中,文件包含一个无法导入的单元格。高亮显示颜色对应于建议的使数据适合数值数组的规则。您可以添加、删除、重新排序或编辑规则,例如将替换值从 NaN 更改为其他值。

The Edit Rule dialog specifies that the Import Tool replaces the unimportable cells highlighted in orange with NaN

所有规则仅应用于导入的数据,不会更改文件中的数据。无论何时,在导入到矩阵或导入到数值列向量时,如果范围包括非数值数据,则必须指定规则。

要查看数据的导入方式,请将光标放在单个单元格上。

当点击导入所选内容按钮 时,导入工具将会在工作区中创建变量。

从多个文本文件中导入数据

要对多个文件执行相同的导入操作,请使用导入工具的代码生成功能。如果通过导入工具逐个导入文件并生成代码,则可以使用此代码来简化重复的操作过程。导入工具可生成程序脚本(您可以编辑并运行该脚本以导入文件)或函数(您可以对每个文件调用该函数)。

假设当前文件夹中有一组文本文件。文件被命名为 myfile01.txtmyfile25.txt,并且您要导入各个文件中从第二行开始的数据。

要生成代码以导入整个文件集,请在导入工具中打开其中一个文件。然后,点击导入所选内容 > 生成函数。导入工具生成类似如下脚本的代码,并在编辑器中打开代码。

function textdata = importfile(filename,dataLines)
%IMPORTFILE Import data from a text file
...

保存函数。然后,在单独的程序文件或命令行中,创建一个 for 循环,将每个文本文件中的数据导入到名为 myData 的元胞数组中。

numFiles = 25;
myData = cell(1,numFiles);

for fileNum = 1:numFiles
    fileName = sprintf("myfile%02d.txt",fileNum);
    myData{fileNum} = importfile(fileName);
end

myData 中的每个元胞包含对应文本文件中的数据数组。例如,myData{1} 包含来自第一个文件 myfile01.txt 的数据。

另请参阅

| | | | | |

主题