列/跳过行的值的平均值(文本扫描)

时间:2011-12-23 14:55:50

标签: matlab file-io textscan

我有一个.txt文件,如下所示:

******text*******
(30 lines containing text and *)
******text*******

a b c
a b c
a b c
a b c
a b c
a b c
a b c

(我正在创建一个带有as和b,c为y1和y2的图表)

如何使用textscan跳过这30行?我有这个,但它不起作用:

[x y1 y2] = textscan('file_name.txt', '%f %f %f', 30);

还有更多:如何制作第三列值的平均值?

2 个答案:

答案 0 :(得分:5)

如何跳过某些行?

您有一些关于线路跳过的选项:

  • 如果行数始终是静态的,并且始终位于文件的开头:

    传递HeaderLines的值为N,其中N是您不想处理的数字。

    [x y1 y2] = textscan ('file_name.txt', '%f %f %f', 'HeaderLines', 30 + 2);

  • 如果所有行都以相同的字符串开头

    *传递CommentStyle,其值为ABC,其中ABC是评论样式。

    如果要跳过的所有行都以*开头,请将'*'传递给textscan

    [x y1 y2] = textscan ('file_name.txt', '%f %f %f', 'CommentStyle', '*');


如何获得某些数组的平均值?

要获得某些数组的平均值,请使用mean

y1_average = mean (y1);

textscan 的文档:

mean

的文档

答案 1 :(得分:0)

如果您知道要跳过多少行,请使用TEXTSCAN函数中的HeaderLines参数:

[x y1 y2] = textscan('file_name.txt', '%f %f %f', 'HeaderLines',30);

在格式化字符串后使用整数参数时,表示您希望将此次格式化字符串应用(在您的案例中要读取的行数)。所以它与你想要的相反。

获得平均使用MEAN功能:

y2_avg = mean(y2);