【问题标题】:Assign a value to a gnuplot function out of a data file从数据文件中为 gnuplot 函数赋值
【发布时间】:2015-11-21 15:25:52
【问题描述】:

在 Gnuplot 中,我尝试从两列数据文件中为函数 f(x) 赋值,以便将该函数绘制为水平线。

f(x)=value of $2 at $1==2 from filename.dat
plot 'filename.dat' , ' ' x<=2?f(x):1/0

我试过了:

awk '$1==2,print{$2}' filename.dat

但它说:

警告:当期望一个数字时遇到一个字符串 您是否尝试使用虚拟变量 x 或 y 生成文件名?"。

有什么建议吗?

P.S.:我知道awk后面应该有&lt;符号,但是这里不会显示。

【问题讨论】:

标签: awk gnuplot


【解决方案1】:

我建议这种方法:

filename = "test.txt"
y = system(sprintf("awk '$1==2{print $2}' %s", filename))
f(x)=real(y)
plot filename u 1:2 w l, f(x) t ''

gnuplot 似乎将y 的值解释为字符串。因此,我们必须强制转换为数字,我将其转换为real 数字。 (另一种可能f(x)=y+0

这是我的演示 test.txt 的输出,内容如下:

1 1
2 0.5
3 0

【讨论】:

  • 非常感谢,我没想到会那么容易,但是每次你搜索这样的“基本”东西时,总是会偶然发现非常高级的东西。你知道我可以在哪里获得更多关于 awk 的基本信息吗??
  • @PaulRousseau:很高兴我能提供帮助。如果您对答案感到满意,请标记已回答的问题。有关 awk 的更多信息,请参阅 Awk by exampleAwk Introduction Tutorial
猜你喜欢
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2013-09-06
  • 2011-11-21
  • 1970-01-01
相关资源
最近更新 更多