在gnuplot中迭代2的幂

时间:2014-08-13 10:25:45

标签: gnuplot

我想使用gnuplot绘制存储在一堆文件中的数据。如果文件是使用序号命名的(例如“1.dat”“2.dat”,......)我会使用像

这样的东西
plot for [i=1:10] i.'.dat' u 1:2 w lp t 'I='.i;

但是,文件现在使用2的幂命名,即“2.dat”,“4.dat”,“8.dat”,....我试过

plot for [i=1:10] (2**i).'.dat' u 1:2 w lp t 'I='.(2**i);

但我收到了错误

STRING operator applied to non-STRING type

我认为这是因为gnuplot将(2**i)视为浮点数而不是整数。

我确信有办法做我想做的事,但因为我很擅长使用gnuplot的控制语句,所以我无法理解。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

您可以使用sprintf将数字转换为字符串:

plot for [i=1:10] sprintf('%d',2**i).'.dat' u 1:2 w lp t 'I='.(2**i)

有趣的是,在标题中将(2**i)'I='连接起来不会造成任何问题。

答案 1 :(得分:3)

尝试使用空字符串("")开始字符串连接操作。这是"".(2**i).".dat"而不是(2**i).".dat"