16.4.3 三項演算子 (Ternary)

一つだけ三項演算子があります:

三項演算子
記号 説明
?: a?b:c 三項演算子

三項演算子は C のものと同じ働きをします。最初の引数 (a) は整数でなけれ ばいけません。この値が評価され、それが真 (ゼロでない) ならば 2 番目の 引数 (b) が評価されその値が返され、そうでなければ 3 番目の引数 (c) が 評価され、その値が返されます。

三項演算子は、区分的に定義された関数や、ある条件が満たされた場合にのみ 点を描画する、といったことを行なう場合に有用です。

例:

0 <= x < 1 では sin(x) に、1 <= x < 2 では 1/x に等しくて、それ以外のx では定義されない関数を描画:

     f(x) = 0<=x && x<1 ? sin(x) : 1<=x && x<2 ? 1/x : 1/0
     plot f(x)

gnuplot は未定義値に対しては何も表示せずにただ無視するので、最後の場 合の関数 (1/0) は点を何も出力しないことに注意してください。また、この 関数描画の描画スタイルが lines (線描画) の場合、不連続点 (x=1) の所も 連続関数として線が結ばれてしまうことにも注意してください。その点を不連 続になるようにするには、関数を 2 つの部分それぞれに分けてください (こ のような場合、媒介変数関数を使うのが便利です)。

ファイル 'file' のデータで、4 列目のデータが負でないときだけ、1 列目の データに関する 2 列目と 3 列目のデータの平均値を描画:


     plot 'file' using 1:( $4<0 ? 1/0 : ($2+$3)/2 )

using の書式の説明に関しては、以下参照: plot datafile using (p. [*])

竹野茂治@新潟工科大学
2019-05-30