2016-05-21 3 views
0

三項演算子を使用して破損点(赤丸)を推定し、私のプロットの範囲を制限したいと思います。gnuplotで曲線の破損点をどのように推定するのですか?

Example plot

三項演算子は十分であると思われるとの組み合わせで統計コマンド - 値X(Y_MAX)への制限を達成するために:

stats 'foo.csv' u 5 nooutput name 'Y_' 
stats 'foo.csv' u 4 every ::Y_index_max::Y_index_max nooutput 
X_max = STATS_max 
plot 'foo.csv' u 4:(($4 <= X_max) ? $5 : 1/0) w l notitle 

私はX_max-を使用することはできません(x_n > x_F)が測定誤差のためにいくつかの点を超えているためです。私の考えは、xエントリ$4を互いに比較し、$4_prev > $4_currを満たす最初のポイントを保存し、それをx_F=$4_prevとして保存することでした。

+0

質問から元の機械工学的問題(「骨折」)を削除するか、説明してください。今のところ、混乱しているだけです。 – Karl

答えて

0

単純なデルタ関数がトリックを行うように思われる:三オペレータ(delta($4)>0 ? $5 : 1/0)と組み合わせてdelta(x)=(D=x-old_D,old_D=x,D)old_D=NaN$5があれば2シークのx値の差が正であるとしてプロットされるY値であり、一方。

+0

私の骨折のポイントを超えるデータポイントがあるため、この解決策は不十分であることが判明しました。 [plot](http://i.stack.imgur.com/oSSRk.png)_x_データポイントは、三項演算子で簡単に除外できます。しかし明らかに条件は 'x_F'で止まるわけではないので、' delta($ 4)> 0'で破断点を越えるデータポイントがプロットされます。私は 'x_F'の値を決定し、条件を'((delta($ 4)> 0)&&($ 4 <= x_F)?$ 5:1/0に拡張するためのループを必要としていることを示唆しています。 。だから私は元の質問に戻ります: 'x_F'をどうやって決めるのですか? – hundmitperuecke

0

dxが最初にマイナスになった後にデータポイントを破棄したいのですが、そうですか?

broken = 0 
plot dataf us (lastx=thisx, thisx=$4): \ 
    (broken ? 1/0 :($4 < lastx) ? $5 : (broken=1, 1/0)) 

これは

など、Cと同様に、「シリアル評価者」としてカンマを使用しています。私は dx < 0の最初の発生後に設定され、 brokenそれを呼ばれる、フラグ変数が必要になります

は(私が手にし、適切なデータを持っていないとして、今テストし、1を作成するのが面倒だったわけではありません。)

更新:あなたは、プロットに分割代入= 0を置くことができます

plot broken=0, dataf us .... 

は、replotになり、プロットを拡大します。

関連する問題