Я пытаюсь разместить некоторые данные в gnuplot. Данные разные кривые. У меня есть три .gnp
файла: один для математической процедуры, один для вызова файла для анализа и один для запуска в gnuplot.
Я получаю эту ошибку, но не знаю, как ее исправить.
gnuplot> load '0-one_fit.gnp'
gnuplot> id = $0
^
"0-one_fit.gnp" строка 5: колонка () вызвана из недопустимого контекста
Этот файл должен хранить порядковый номер от 0 до идентификатора переменной. Порядковый номер передается в этот скрипт извне loop.gnp при вызове команды.
В файле написано:
id = $0
filename = sprintf("FeCoBSiNbCu%04d.chi",id)
fit [26:35.6] f110(x) filename u 1:2 via x110,A110,w110,a0,a1
fit [42.3:45.1] f200(x) filename u 1:2 via x200,A200,w200,b0,b1
fit [48:56.1] f23(x) filename u 1:2 via x2,A2,w2,x211,A211,w211,c0,c1
entry1 = sprintf("%d\t%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",id,x110,x110_err,A110,A110_err,w110,w110_err)
entry2 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",x200,x200_err,A200,A200_err,w200,w200_err)
entry3 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",x2,x2_err,A2,A2_err,w2,w2_err)
entry4 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f",x211,x211_err,A211,A211_err,w211,w211_err)
print entry1, entry2, entry3, entry4
Обновление: я изменил в файле с id=ARG1
, но теперь он дает мне другую ошибку
gnuplot> call '0-one_fit.gnp' 0
"0-one_fit.gnp" line 8: f_sprintf: attempt to print string value with numeric format
Если я изменю сейчасс int(id)
он говорит:
load '0-one_fit.gnp'
"0-one_fit.gnp" line 8: Non-numeric string found where a numeric expression was expected
ОБНОВЛЕНИЕ Я попытался сначала запустить файл с именем 0-in-situ.gnp
, который содержит функции для пиковой подгонки:
#### First peak: (110)
bg110(x) = a0 + a1*x
k110(x) = (x-x110)/w110
Gauss110(x) = A110*exp(-log(2)*k110(x)**2)
Cauchy110(x) = A110/(1 + k110(x)**2)
pV110(x) = alpha*Gauss110(x) + (1-alpha)*Cauchy110(x)
f110(x) = pV110(x) + bg110(x)
#### Second peak: (200)
bg200(x) = b0 + b1*x
k200(x) = (x-x200)/w200
Gauss200(x) = A200*exp(-log(2)*k200(x)**2)
Cauchy200(x) = A200/(1 + k200(x)**2)
pV200(x) = beta*Gauss200(x) + (1-beta)*Cauchy200(x)
f200(x) = pV200(x) + bg200(x)
#### Third peak & deconvolution (Q2 & 211):
bg(x) = c0 + c1*x
k2(x) = (x-x2)/w2
k211(x) = (x-x211)/w211
Gauss2(x) = A2*exp(-log(2)*k2(x)**2)
Cauchy2(x) = A2/(1 + k2(x)**2)
pV2(x) = gamma*Gauss2(x) + (1-gamma)*Cauchy2(x)
Gauss211(x) = A211*exp(-log(2)*k211(x)**2)
Cauchy211(x) = A211/(1 + k211(x)**2)
pV211(x) = delta*Gauss211(x) + (1-delta)*Cauchy211(x)
f23(x) = pV2(x) + pV211(x) + bg(x)
alpha = 0
beta = 0
gamma = 1
delta = 0
A110 = 15574
x110 = 31.1
w110 = 2.4
a0 = 1760
a1 = 6
A200 = 4153
x200 = 52.2
w200 = 3
b0 = 1500
b1 = 15
A2 = 1800
x2 = 51.6
w2 = 3
A211 = 1897
x211 = 76.6
w211 = 0.3
c0 = 1830
c1 = -2
#### Loop through all XRD patterns:
load "0-loop.gnp"
Программа идет, но когда я открываю файл .dat, который должен содержать данные, по-видимому, он анализирует не все кривые, а только первые. Это проблема цикла ниже?
call "0-one_fit.gnp" 447
call "0-one_fit.gnp" 448
call "0-one_fit.gnp" 449
call "0-one_fit.gnp" 450
call "0-one_fit.gnp" 451
call "0-one_fit.gnp" 452