Main Content

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

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

以交互方式选择数据

以下示例演示如何使用导入工具导入具有列标题和数值数据的文本文件中的数据。示例中的文件 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            92.5
   92.1    96.4    81.2    84.6

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

主页选项卡上的变量部分中,点击导入数据 。或者,在当前文件夹浏览器中右键点击文件名,然后选择导入数据。此时将打开导入工具。

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

导入工具识别出 grades.txt 为等宽文件。在导入的数据部分中,选择要导入数据的方式。下表指示如何根据所选的选项导入数据。

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

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

The Delimiter Options are located within the Delimiters section of the Import tab.

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

The variable name is located as a column header.

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

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

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

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

For example, information on how a value was replaced might be shown

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

有关与导入工具交互的详细信息,请观看此视频

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

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

假设当前文件夹中有一组文本文件。文件被命名为 myfile01.txtmyfile25.txt,并且您要导入各个文件中从第二行开始的数据。生成代码以导入整个文件集,如下所示:

  1. 在导入工具中打开一个文件。

  2. 点击导入所选内容 ,然后选择生成函数。导入工具生成类似如下脚本的代码,并在编辑器中打开代码。

    function data = importfile(filename,startRow,endRow)
    %IMPORTFILE Import numeric data from a text file as a matrix.
    ...
  3. 保存函数。

  4. 在单独的程序文件或命令行中,创建一个 for 循环,将每个文本文件中的数据导入到名为 myData 的元胞数组中:

    numFiles = 25;
    startRow = 2;
    endRow = inf;
    myData = cell(1,numFiles);
    
    for fileNum = 1:numFiles
        fileName = sprintf('myfile%02d.txt',fileNum);
        myData{fileNum} = importfile(fileName,startRow,endRow);
    end

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

另请参阅

| | | | |

相关主题