gnuplot: использование форматов данных для разделения числа? - PullRequest
0 голосов
/ 22 февраля 2020

Я хочу отделить заданный диапазон от логарифмической шкалы c, особенно минимальное значение. например, x_min = 0,2, и я хочу получить «2» и «-1» как части 2 * 10 ** (- 1) для дальнейшего использования. Из руководства это будет% t и% T. Я попытался использовать print ("% T", x_min), но я просто получаю x_min, независимо от того, какой тип я установил при печати. Есть ли способ сделать это в gnuplot?

1 Ответ

2 голосов
/ 23 февраля 2020

@ GRSousaJR уже упомянул некоторые несоответствия с gprintf() и %t и %T в комментариях. Я быстро протестировал с gnuplot 5.2.8, несоответствия все еще там. Громоздкое решение дано здесь .

Например:

print gprint("%t",95) дает 0.95 и print gprintf("%T",95) дает 2.

Итак, 95 = 0.95 x 10^2 не так, но ожидаемый результат будет 9.5 x 10^1.

Но теперь, если вы будете использовать, например, %.3t вместо %t, вы получите неправильно результаты. Может быть, кто-то может объяснить это? *

### inconsistency in gprintf with %t and %T
reset session

array Numbers = [0.95, 9.5, 95, 995, 9995]

print "gprintf with %t"
do for [i=1:|Numbers|] {
    print gprintf("% 8g",Numbers[i])." = ".gprintf("%t",Numbers[i])." x 10^".gprintf("%T",Numbers[i])
}
print "gprintf with %.3t"
do for [i=1:|Numbers|] {
    print gprintf("% 8g",Numbers[i])." = ".gprintf("%.3t",Numbers[i])." x 10^".gprintf("%T",Numbers[i])
}
print "gprintf with %.0t"
do for [i=1:|Numbers|] {
    print gprintf("% 8g",Numbers[i])." = ".gprintf("%.0t",Numbers[i])." x 10^".gprintf("%T",Numbers[i])
}
### end of code

Результат: (с gnuplot 5.2.8)

gprintf with %t
    0.95 = 9.500000 x 10^-1
     9.5 = 9.500000 x 10^0
      95 = 0.950000 x 10^2    # somehow correct but not the expected result
     995 = 0.995000 x 10^3    # somehow correct but not the expected result
    9995 = 0.999500 x 10^4    # somehow correct but not the expected result
gprintf with %.3t
    0.95 = 9.500 x 10^-1
     9.5 = 9.500 x 10^0
      95 = 9.500 x 10^2    # simply wrong
     995 = 9.950 x 10^3    # simply wrong
    9995 = 9.995 x 10^4    # simply wrong
gprintf with %.0t
    0.95 = 9 x 10^-1
     9.5 = 9 x 10^0
      95 = 1 x 10^2    # somehow ok, rounded. But why not 9 x 10^1, similar to 9.5?
     995 = 1 x 10^3    # ok, rounded
    9995 = 1 x 10^4    # ok, rounded
...