使用 headers 在 Matlab 中导入文件

Import file in Matlab with headers

假设我们有以下数据

Month   High     Low    Average
    1   45.36   33.84   39.6
    2   50.87   35.98   43.43
    3   56.05   38.55   47.3
    4   60.49   41.36   50.92
    5   67.17   46.92   57.05
    6   73.82   52.8    63.31
    7   79.72   56.43   68.07
    8   80.14   56.79   68.47
    9   74.54   51.83   63.18
    10  64.08   44.95   54.52
    11  52.66   39.54   46.1
    12  45.59   34.75   40.17

我知道我需要函数 fprintf 来导入包含 headers 的文件。我们有 4 列和 12 行,那么如何使用 fprintf 函数或我应该使用哪个函数才能成功导入数据?有this code,但我不确定它是否可靠。我可以使用 Matlab 本身的东西吗?

对文件使用fscanf,对字符串使用sscanf。语法类似于您熟悉的 fprintf 的语法。 The matlab documentation provides a comprehensive set of examples to get you started.

不太灵活,但足以满足您的使用可能是 dlmread

假设您的数据在 data.txt 中并且您想跳过第一行(因为它是 header),请执行以下操作:

>> x = dlmread('data.txt', '', 1, 0)

x =

    1.0000   45.3600   33.8400   39.6000
    2.0000   50.8700   35.9800   43.4300
    3.0000   56.0500   38.5500   47.3000
    4.0000   60.4900   41.3600   50.9200
    5.0000   67.1700   46.9200   57.0500
    6.0000   73.8200   52.8000   63.3100
    7.0000   79.7200   56.4300   68.0700
    8.0000   80.1400   56.7900   68.4700
    9.0000   74.5400   51.8300   63.1800
   10.0000   64.0800   44.9500   54.5200
   11.0000   52.6600   39.5400   46.1000
   12.0000   45.5900   34.7500   40.1700

--编辑-- 来自文档:

dlmread(filename, delimiter, R, C) reads data whose upper left corner is at row R and column C in the file, using the specified delimiter. The filename input is a string enclosed in single quotes. Values R and C are zero-based, so that R=0, C=0 specifies the first value in the file.

现在我们想使用默认分隔符(任意数量的空格),但必须提供一个,因为我们还提供了 Row 和 Col 参数,我们提供了一个空字符串。

另一种选择是使用 importdata。它可能有点慢,但它非常擅长弄清楚 header 是什么并忽略它。