Среднее значений из столбца / Пропускать строки (текстовое сканирование) - PullRequest
1 голос
/ 23 декабря 2011

У меня есть файл .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

(я создаю сюжет с x и b и c y1 и y2)

Как мне пропустить эти 30 строк с помощью функции textcan? У меня было это, но это не сработало:

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

И еще: как сделать среднее значение для третьего столбца?

Ответы [ 2 ]

5 голосов
/ 23 декабря 2011

Как пропустить определенные строки из обработки?

У вас есть несколько вариантов пропуска строк:

  • Если число строк всегдаstatic и всегда в начале файла:

    Передайте 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

0 голосов
/ 23 декабря 2011

Если вы знаете, сколько строк пропустить, используйте параметр HeaderLines в функции TEXTSCAN :

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

Когда вы используете целочисленный аргумент после строки форматирования, это означает, что вы хотите применить строку форматирования это количество раз (количество строк для чтения в вашем случае). Так что это противоположно тому, что вы хотите.

Чтобы получить среднее значение, используйте MEAN функцию:

y2_avg = среднее (y2);

...