Синтаксическая ошибка «за именем блока данных должен следовать << EODmarker» - PullRequest
0 голосов
/ 16 апреля 2019

Я новичок в gnuplot. Я просто хочу построить график, который я нашел в Википедии: https://commons.wikimedia.org/wiki/File:Double_exponential_moving_average_weightings_N%3D10.png

Но я получаю эту синтаксическую ошибку "За именем блока данных должен следовать << EODmarker" </p>

Спасибо

$N = 10;
$f = 1 - 2/($N+1);


$total = 0;
foreach $i (0..39) {
  $value =
    2 * 100.0 * (1 - $f) * ($f ** $i)
      - 100.0 * (1 - $f) * (1 - $f) * ($i + 1) * ($f ** $i);
  print "$i $value\n";
  $total += $value;
}
print "# total $total (should approach 100)\n";    

1 Ответ

0 голосов
/ 16 апреля 2019

Того же результата можно достичь, используя только gnuplot.

N = 10
f = 1.0 - 2.0/(N + 1)

total = 0

set print 'dema.data'
    do for [i=0:39:1]{
        value = \
            2 * 100 * (1.0 - f) * (f**i) \
              - 100 * (1.0 - f) * (1.0 - f) * (i + 1.0) * (f**i)
        print sprintf('%02d    % .5f', i, value)
        total = total + value
    }
unset print
print sprintf('# total %g (should approach 100)', total)

Для просмотра результата я использую модифицированный код gnuplot по вашей ссылке.

set terminal pngcairo size 800, 600
set output 'output.png'

set xrange [-0.5:39.5]
set xtics axis 5
set mxtics 5

set yrange [-4:35]
set format y "%.1f"

unset key
set style fill solid 1.0
set boxwidth 0.6 relative
plot "dema.data" with boxes

Который производит этот график .

...