1

我有一个 .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

(我正在创建一个情节,其中 a 作为 x 和 b 和 c 作为 y1 和 y2)

如何使用 textscan 跳过这 30 行?我有这个但是没有用:

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

还有更多:如何计算第三列的平均值?

4

2 回答 2

5

如何跳过正在处理的某些行?

关于跳线,您有几个选项:

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

    以 N 值传递HeaderLines,其中 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

于 2011-12-23T15:10:03.113 回答
0

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

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

当您在格式化字符串之后使用整数参数时,这意味着您想要多次应用格式化字符串(在您的情况下要读取的行数)。所以它与你想要的相反。

要获得平均值,请使用MEAN函数:

y2_avg = 平均值(y2);

于 2011-12-23T15:03:36.670 回答