Added basic simulation of spectroscopic data
This commit is contained in:
parent
1c71badbef
commit
6953c9bf9e
2 changed files with 46 additions and 0 deletions
|
|
@ -48,11 +48,14 @@ export TRSegCV
|
||||||
export TRVirCV
|
export TRVirCV
|
||||||
export TRBidiagDecomp
|
export TRBidiagDecomp
|
||||||
|
|
||||||
|
export simulateSpectrum
|
||||||
|
|
||||||
|
|
||||||
include("preprocessing.jl")
|
include("preprocessing.jl")
|
||||||
include("convenience.jl")
|
include("convenience.jl")
|
||||||
include("conveniencePlots.jl")
|
include("conveniencePlots.jl")
|
||||||
include("variousRegressionFunctions.jl")
|
include("variousRegressionFunctions.jl")
|
||||||
include("TR.jl")
|
include("TR.jl")
|
||||||
|
include("simulateSpectroscopicData.jl")
|
||||||
|
|
||||||
end
|
end
|
||||||
43
src/simulateSpectroscopicData.jl
Normal file
43
src/simulateSpectroscopicData.jl
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
Lk(waves, c, gamma) = @. gamma / (pi*(waves-c)^2+gamma^2);
|
||||||
|
Gk(waves, c, gamma) = @. 1/(sqrt(2*pi)*gamma) * exp(-(waves-c)^2 / (2*gamma^2));
|
||||||
|
|
||||||
|
function pseudoVoigtPeak(waves, c, gamma, eta, alpha)
|
||||||
|
|
||||||
|
fk = zeros(length(waves));
|
||||||
|
|
||||||
|
for i in 1:length(c)
|
||||||
|
fk += alpha[i] .* pseudoVoigtPeak(waves, c[i], gamma[i], eta[i]);
|
||||||
|
end
|
||||||
|
|
||||||
|
return fk
|
||||||
|
end
|
||||||
|
|
||||||
|
function pseudoVoigtPeak(waves, c, gamma::Float64, eta::Float64)
|
||||||
|
|
||||||
|
fk = eta * Lk(waves, c, gamma) + (1-eta) * Gk(waves, c, gamma);
|
||||||
|
|
||||||
|
return fk
|
||||||
|
end
|
||||||
|
|
||||||
|
function simulateBaseline(waves, a)
|
||||||
|
|
||||||
|
vm = zeros(length(waves), length(a));
|
||||||
|
|
||||||
|
for i in 0:(length(a)-1)
|
||||||
|
vm[:, i+1] = waves.^i ./ norm(waves.^i);
|
||||||
|
end
|
||||||
|
|
||||||
|
b = vm * a;
|
||||||
|
|
||||||
|
return b
|
||||||
|
end
|
||||||
|
|
||||||
|
function simulateSpectrum(waves, c, gamma, eta, alpha, a, sigma=0.0)
|
||||||
|
|
||||||
|
pure_spec = pseudoVoigtPeak(waves, c, gamma, eta, alpha);
|
||||||
|
b = simulateBaseline(waves, a);
|
||||||
|
noise = randn(length(waves)) .* sigma;
|
||||||
|
spec = pure_spec + b + noise;
|
||||||
|
return spec, pure_spec, b, noise
|
||||||
|
end
|
||||||
|
|
||||||
Loading…
Add table
Reference in a new issue