循环

figure_newsyntax

gnuplot 4.6 版引入了命令迭代和块结构 if/else/while/do 构造。参考if,whiledo。在plotset命令中可以进行简单的迭代。参考plot for。用如下所示的块结构可以跨越多行命令建造更通用的迭代。对于有关的新特性,参考求和表达式类型。这里有一些使用这些新语法特性的示例:

  set multiplot layout 2,2
  fourier(k, x) = sin(3./2*k)/k * 2./3*cos(k*x)
  do for [power = 0:3] {
      TERMS = 10**power
      set title sprintf("%g term Fourier series",TERMS)
      plot 0.5 + sum [k=1:TERMS] fourier(k,x) notitle 
  }
  unset multiplot

迭代由具有语法的迭代说明符控制

 for [<var> in "string of N elements"]

或者

 for [<var> = <start> : <end> { : <increment> }]

在第一种情况下,<var> 是一个字符串变量,在迭代过程中连续求得字符串的第 1 到 N 个单个单词的子串。在第二种情况下,<start>, <end> 和 <increment> 是整数或整数表达式。

有一个例外,gnuplot 变量是全局的。有一个唯一的、持久的、按名字索引的活动变量列表。分配给变量会创建或替换该列表中的条目。从该列表中删除变量的唯一方法是undefine命令。

这个唯一的例外是迭代说明符中使用的变量。迭代变量的范围对于该迭代是私有的。你不能永久改变迭代子句内迭代变量的值。如果迭代变量在迭代之前有一个值,则在迭代结束时该值被保留或恢复。例如,以下命令将打印 1 2 3 4 5 6 7 8 9 10 A。

 i = "A"
 do for [i=1:10] { print i; i=10; }
 print i

results matching ""

    No results matching ""