gnuplot - Как я могу подсчитать количество записей в столбце CSV-файла?

У меня есть код gnuplot, который включает процедуру подгонки функций.

Эта процедура работает медленно, когда необходимо установить большое количество точек данных. Количество точек данных в моем входном файле зависит от параметров некоторых симуляций, которые я запускаю.

Я хочу, чтобы соответствовать только 100 баллов. До сих пор я делал это, вручную вычисляя количество записей в моем входном файле, деля на 100 и используя полученное число в качестве команды «каждое N» для команды подбора.

Более детально:

Команда настройки, которую я использую:

fit f(x) "output.csv" every N using 1:4:9 via a,b

Где N = integer_round_down(output_file_length / 100.0) — я вычисляю это вручную на калькуляторе, прежде чем вручную заменить значение N в моем скрипте gnuplot. (Хорошо, поэтому деление на 100 я делаю в уме, а не на калькуляторе.)

Есть ли способ, которым я могу получить количество записей в любом из столбцов, например, столбец 1, столбец 4 или столбец 9... Затем используйте переменные в моем скрипте для вычисления N без необходимости редактировать мой скрипт каждый раз, когда я меняю свою симуляцию параметры?


person FreelanceConsultant    schedule 12.06.2015    source источник
comment
Не знаете, как можно иметь разное количество записей в столбце 1 и столбце 4 в файле csv? Можете ли вы использовать system("wc -l < output.csv"), чтобы получить количество строк в вашем CSV?   -  person Mark Setchell    schedule 12.06.2015
comment
@MarkSetchell Извините, если это было двусмысленно - у всех одинаковое количество записей.   -  person FreelanceConsultant    schedule 12.06.2015


Ответы (1)


Вы можете использовать предложенное в комментариях решение с вызовом system() или использовать stats:

Опция 1:

N = floor(system("wc -l output.csv")/100.)

Вариант 2:

stats output.csv
N = floor(STATS_records/100.)
person Miguel    schedule 12.06.2015
comment
Если у моего output.csv есть строка заголовка, должен ли я также вычесть 1 из STATS_records? - person FreelanceConsultant; 16.06.2015
comment
Если gnuplot интерпретирует ваш заголовок как не данные (например, он имеет знак комментария #), вам не нужно вычитать. В противном случае вам нужно проверить: попробуйте с небольшим файлом данных с тем же заголовком, что и ваш output.csv, запустите на нем stats, а затем print STATS_records и посмотрите, что получится. - person Miguel; 16.06.2015