使用数字数据和单词Matlab读取.txt文件

时间:2012-04-25 18:04:34

标签: matlab file-io

我想在matlab中读取包含数据和单词的.txt文件 .txt文件的内容是

(title "Particle Tracks")
(labels "Time" "Particle Velocity Magnitude")

((xy/key/label "particle-1")
1e-06   45.4551
2e-06   40.3895
2e-06   44.0437
3e-06   34.9606
4e-06   33.1695
4e-06   35.3499
5e-06   29.9504
6e-06   28.0226
6e-06   35.1794
7e-06   41.2255
....

((xy/key/label "particle-2")
1e-06   43.7789
1e-06   45.0513
2e-06   44.1221
3e-06   37.8328
3e-06   43.6451
4e-06   29.1166
5e-06   41.3342
6e-06   28.7241
6e-06   36.3779
7e-06   31.9631
8e-06   29.2826
9e-06   24.7755
9e-06   24.9516
1e-05   22.7528
1e-05   26.6802
1.1e-05 34.4668

文件扩展为100个粒子,第1列是时间,第2列是速度  我打算在第1列的不同时间找到所有粒子的平均速度,所以基本上我想添加相应的第2列值并将它们除以100,并显示相对于所有100个粒子相同的第1列值! [在此处输入图像说明] [2]

感谢

2 个答案:

答案 0 :(得分:0)

使用这样的复杂结构读取文本数据的最佳方法是在MATLAB中使用fscanf函数。按照文档,您应该能够将数据读入一个数组,您可以使用该数组计算您想要查找的统计数据。

另一种选择可能是逐行读取数据并使用带有regexpi函数的正则表达式来提取所需的数据。

答案 1 :(得分:0)

假设您的输入文件为input.txt,然后使用textscan,如下所示:

fid = fopen('input.txt');
C = textscan(fid, '%n %n', 'commentStyle', '(');
a = C{1};
b = C{2};,

%# do your computations on vectors a and b

%# for example: 
ma = mean(a)
mb = mean(b)

您可以根据需要使用矢量,例如你可以100个元素处理它们。这取决于你。