使用 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.
现在我们想使用默认分隔符(任意数量的空格),但必须提供一个,因为我们还提供了 R
ow 和 C
ol 参数,我们提供了一个空字符串。
另一种选择是使用 importdata
。它可能有点慢,但它非常擅长弄清楚 header 是什么并忽略它。
假设我们有以下数据
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.
现在我们想使用默认分隔符(任意数量的空格),但必须提供一个,因为我们还提供了 R
ow 和 C
ol 参数,我们提供了一个空字符串。
另一种选择是使用 importdata
。它可能有点慢,但它非常擅长弄清楚 header 是什么并忽略它。