Sha256: 4705aed9e437cbd5fe4032048182ea145de284ed5b9b78d74b22eb1f89b3b611

Contents?: true

Size: 781 Bytes

Versions: 22

Compression:

Stored size: 781 Bytes

Contents

#!/usr/bin/env ruby
require("gsl")

# Create data
r = GSL::Rng.alloc("knuthran")
amp1 = 5.0
x01 = 1.0
sigma1 = 1.5

amp2 = 2.0
x02 = 5.0
sigma2 = 0.5

y0 = 2.0
N = 300
x = GSL::Vector.linspace(-4, 9, N)
y = y0 + amp1*GSL::Ran::gaussian_pdf(x - x01, sigma1) + amp2*GSL::Ran::gaussian_pdf(x - x02, sigma2) + 0.05*GSL::Ran::gaussian(r, 1.0, N)

coef, err, chi2, dof =  GSL::MultiFit::FdfSolver.fit(x, y, "gaussian_2peak", [2, 4, 0.9, 1, 1, 4, 1])

p coef
y01 = coef[0]

amp1 = coef[1]*Math::sqrt(2*Math::PI)*sigma1
x01 = coef[2]
sigma1 = Math::sqrt(coef[3])

amp2 = coef[4]*Math::sqrt(2*Math::PI)*sigma2
x02 = coef[5]
sigma2 = Math::sqrt(coef[6])

y2 = y01 + amp1*GSL::Ran::gaussian_pdf(x - x01, sigma1) + amp2*GSL::Ran::gaussian_pdf(x - x02, sigma2)

GSL::graph(x, y, y2, "-C -g 3")

Version data entries

22 entries across 22 versions & 4 rubygems

Version Path
gsl-2.1.0.3 examples/fit/gaussian_2peaks.rb
gsl-2.1.0.2 examples/fit/gaussian_2peaks.rb
gsl-2.1.0.1 examples/fit/gaussian_2peaks.rb
gsl-2.1.0 examples/fit/gaussian_2peaks.rb
gsl-1.16.0.6 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0.5 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0.4 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0.3 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0.3.rc1 examples/fit/gaussian_2peaks.rb
gsl-nmatrix-1.15.3.2 examples/fit/gaussian_2peaks.rb
gsl-nmatrix-1.15.3.1 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0.2 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0.1 examples/fit/gaussian_2peaks.rb
rb-gsl-1.16.0 examples/fit/gaussian_2peaks.rb
rb-gsl-1.15.3.2 examples/fit/gaussian_2peaks.rb
rb-gsl-1.15.3.1 examples/fit/gaussian_2peaks.rb
blackwinter-gsl-1.15.3.2 examples/fit/gaussian_2peaks.rb
gsl-nmatrix-1.15.3.0 examples/fit/gaussian_2peaks.rb
gsl-1.15.3 examples/fit/gaussian_2peaks.rb
gsl-1.14.7 examples/fit/gaussian_2peaks.rb