# Deconvolution of Guassian curve

33 views (last 30 days)
Pouyan Msgn on 5 May 2020
Commented: Alex Sha on 6 May 2020
I have a curve here which I have to deconvolve it into many other curves with different peaks. The resault is this in another program:
That is I have to deconvolve one curve in 4 curves in Matlab! I want to do the same thing in Matlab but I failed!
clc
clear all
D398=importdata('J398.txt');
D398=flipud(D398); %its a spectrum from higher values to smaller!
X1=D398(:,1); Y1=D398(:,2);
[X,Y]=deconv(X1,Y1);
plot(X1,Y1)
hold on
plot(X,Y,'r')
set(gca, 'XDir','reverse')
grid on
But it is not correct! Is that possible to do this in Matlab ?

Alex Sha on 5 May 2020
Hi, you may try 4 Gauss Function:
The results will be:
Root of Mean Square Error (RMSE): 451.21462729511
Sum of Squared Residual: 49066308.2123007
Correlation Coef. (R): 0.999771552934335
R-Square: 0.999543158056732
Determination Coef. (DC): 0.999543158056733
Parameter Best Estimate
---------- -------------
y0 6181.08011049796
a1 -3146.47497260807
w1 1.88004200222529
xc1 528.043585459549
a2 67855.6616645231
w2 1.23677625792812
xc2 533.256290476665
a3 89669.8140293669
w3 1.73388329145185
xc3 531.944238118754
a4 -58214.4714395774
w4 -1.73177439354019
xc4 534.823600475954

Pouyan Msgn on 5 May 2020
Thank you but could you please tell me what the code is and how I should perform this algorithm ?
Is this just to add this code:
f = fit(X,Y,'gauss4')
???
Alex Sha on 6 May 2020
Combination of 4 Gauss function looks like:
y = y0+(a1/(w1*sqrt(pi/2)))*exp(-2*((x-xc1)/w1)^2)+(a2/(w2*sqrt(pi/2)))*exp(-2*((x-xc2)/w2)^2)+(a3/(w3*sqrt(pi/2)))*exp(-2*((x-xc3)/w3)^2)+(a4/(w4*sqrt(pi/2)))*exp(-2*((x-xc4)/w4)^2)
In Matlab, you can use lsqcurvefit, the problem is it is not easy to guess/provide proper initial start value for each parameter.