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 TRBidiagDecomp
|
||||
|
||||
export simulateSpectrum
|
||||
|
||||
|
||||
include("preprocessing.jl")
|
||||
include("convenience.jl")
|
||||
include("conveniencePlots.jl")
|
||||
include("variousRegressionFunctions.jl")
|
||||
include("TR.jl")
|
||||
include("simulateSpectroscopicData.jl")
|
||||
|
||||
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