【问题标题】:gnuplot - How can I count the number of entries in a csv file column?gnuplot - 如何计算 csv 文件列中的条目数?
【发布时间】:2015-06-12 10:31:54
【问题描述】:

我有一个 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) - 我在计算器上手动计算此值,然后在我的 gnuplot 脚本中手动替换 N 的值。 (好吧,除以 100,我是在脑海中计算的,而不是在计算器上。)

有什么方法可以获取任何列中的条目数,例如 col 1、col 4 或 col 9...然后在我的脚本中使用变量来计算 N,而不必每次都编辑我的脚本更改我的模拟参数?

【问题讨论】:

  • 不确定如何在 csv 文件中的第 1 列与第 4 列有不同数量的条目?您可以使用system("wc -l < output.csv") 获取您的csv 中的行数吗?
  • @MarkSetchell 抱歉,如果这含糊不清 - 他们都有相同数量的条目

标签: csv plot gnuplot function-fitting


【解决方案1】:

您可以通过 system() 调用使用 cmets 中提供的解决方案,或使用 stats:

选项 1:

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

选项 2:

stats output.csv
N = floor(STATS_records/100.)

【讨论】:

  • 如果我的output.csv 有标题行,我是否也必须从STATS_records 中减去1?
  • 如果 gnuplot 将您的标题解释为非数据(例如,它有一个注释符号 #),那么您不需要减去。否则你需要检查:尝试使用与output.csv 相同标题的小数据文件,在其上运行stats,然后运行print STATS_records,看看你得到了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
相关资源
最近更新 更多