Я хочу сделать следующее:
У меня есть набор данных, следующий за формой гауссовой линии, но есть некоторые данные, которые сильно отклоняются. Для полученного соответствия эти данные не должны быть включены.
Так что моя идея состоит в том, чтобы создать 2 гауссовых, один сверху и один снизу, как ограничение. Так что только все точки данных, лежащие между этими 2 гауссианами, считаются подходящими, а остальные снаружи - нет.
Я могу легко создать 2 гауссиана и создать эти данные в таблице, используя: (примечание: данные = файл данных)
set table '1.Gauss'
plot g(x)+0.1
unset table
set table '2.Gauss'
plot g(x)-0.1
unset table
set table 'all'
plot '1.Gauss', '2.Gauss', 'data'
unset table
Но потом: все данные перечислены один за другим. Более того, я не знаю, как это сделать позже, сказав, что просто используйте эти данные, если они находятся между этими двумя гауссианами.
У тебя есть другая идея?
Сложение:
Я не очень увлекаюсь программированием или gnuplot, поэтому мне сложно понять ваши сообщения. Итак, вот все мои программы в gnuplot:
set xrange [1038.6603:1038.666]
set yrange [0.8:1.3]
file="data"
g(x) = N0*(A*exp(-(x-(b+d))2/(2*sigma2)))+c
N0=0.2; b=1038.66315;d=0.00001; c=1; A=3; sigma=0.0001
filterData(y,m,M)=((yM)? 1/0 : y)
fit h(x) file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) via N0,d,c,A,sigma
plot file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) g(x)-0.1, g(x)+1, h(x)
От второго до последнего ряда gnuplot говорит: «неопределенная переменная: x»
Я знаю, что что-то, конечно, отсутствует или неправильно, но я действительно не знаю, как решить. Не могли бы вы также прокомментировать ваши строки? Так что может понять непрофессионал как я? Спасибо :)
ЗДЕСЬ 2-Й ДОПОЛНЕНИЕ:
вот весь мой текст:
set xrange [1038.6598:1038.6663]
set yrange [0.8:1.3]
set fit errorvariables
file= "09_05_16-10.thzpp"
g(x) = N0*(A*exp(-(x-(b+d))**2/(2*sigma**2)))+c
N0=0.2; b=1038.66315;d=0.00001; c=1; A=3; sigma=0.0001
filterData(y,m,M)=((y<m||x>M)? 1/0 : y)
fit h(x) file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) via N0,d,c,A,sigma
plot file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)), g(x)-0.1, g(x)+1, h(x)
Это дает мне ошибку «в строке 8: неопределенная переменная: х»
Таким образом, мои данные находятся в диапазоне x между: [1038.6598: 1038.6663]. Когда я удаляю последние 3 строки и просто использую вместо:
fit [1038.6603:1038.666] [0.95:1.2] g(x) file via N0,d,c,A,sigma
plot file title 'Messung', g(x) title 'Fit'
это работает, но у меня нет этого приятного ограничения 2 Гаусса.
Так что же не так в моем верхнем тексте?