2016-08-19 10 views
0

xをデータファイルの値とする関数をプロットするにはどうすればよいですか?そのような何か:Gnuplot関数

set encoding utf8 
set term postscript eps enhanced color font "Helvetica, 20" 
set output 'kernel.eps' 

# Mean & Standard Deviation 
load "mean_sd.dat" 

# Bandwidth 
h = 1.6*sd*n**(-0.2) 

# Kernel Function 
K(x) = exp(-x*x/2.0)/(sqrt(2.0*pi)) 

# PLOT --> THIS DOES NOT WORK 
# EACH VALUE IN $2 MUST BE USED FOR A SINGLE K(X) 
plot for [i=1:n] 'probability.dat' using 0:(K((x - $2)/h)) 

マイデータファイル 'probability.dat':

366.000000 3.153012 
366.000000 4.211409 
366.000000 3.845248 
366.000000 4.131654 
366.000000 3.956508 

は、事前にありがとうございます。

答えて

0

私は私が正しくあなたの質問を理解していることを確認していないが、あなたは第二カラムからのすべての値のためにカーネル関数をプロットしたい場合は、次のように1は、たとえば進めることができます:ここで

set encoding utf8 
set term postscript eps enhanced color font "Helvetica, 20" 
set output 'kernel.eps' 

# Mean & Standard Deviation 
sd=1 
n=1 

# Bandwidth 
h = 1.6*sd*n**(-0.2) 

# Kernel Function 
K(x) = exp(-x*x/2.0)/(sqrt(2.0*pi)) 

# PLOT --> THIS DOES NOT WORK 
# EACH VALUE IN $2 MUST BE USED FOR A SINGLE K(X) 

fname = 'probability.txt' 
N = system(sprintf("wc -l %s | gawk '{print $1}'", fname)) 

cmd(i) = system(sprintf("gawk 'NR==%d{print $2;exit}' %s", i, fname)) 

set key left top reverse 

set xr [-10:10] 
plot for [i=1:N] K((x - cmd(i))/h) title sprintf("%.3f", real(cmd(i))) lw 2 

  1. (あるいは、一方がstatsコマンドを使用することができる)と、入力ファイルの総数またはレコードを見つける

    :「戦略」はあります
  2. 出力は、入力ファイルから

    cmd(i) = sprintf("gawk 'NR==%d{print $2;exit}' %s", i, fname) 
    

i番目の値を抽出する関数を定義する:

enter image description here