:GaussLorentzл϶ֵ

ʽ:
[er, y0, a, b] = MultiPeakFit(xy, m, n, error, threadNum, seedCount)
[er, y0, a, b] = MultiPeakFit(xy, m, n, error, threadNum)
[er, y0, a, b] = MultiPeakFit(xy, m, n, error)
[er, y0, a, b] = MultiPeakFit(xy, m, n, maxV)
[er, y0, a, b] = MultiPeakFit(xy, m, n)
[er, y0, a, b] = MultiPeakFit(xy, m)

xy: һΪ2ľ,洢,еһжӦ˵еx,2жӦyֵ
m : ˹ֵ,ĬΪ0
n : Lorentzֵ,ĬΪ0
error: ,Ĭ1e-16
threadNum: ߳,ĬΪ6
seedCount: ,ĬΪ18

er: صƽ
y0: رʽϵ,ɿ˵
a : صm*3ĸ˹ֵϵ
b : صn*3Lorentzֵϵ

˵:

1Զ庯, Ҫϵy0, a, b
y = y0 + a(1,1)*exp(-(x-a(1,2))^2/(2 * a(1,3)^2)) + a(2,1)*exp(-(x-a(2,2))^2/(2 * a(2,3)^2)) +  + a(m,1)*exp(-(x-a(m,2))^2/(2 * a(m,3)^2))
       + b(1,1)/((x-b(1,2))^2+b(1,3)^2) + b(2,1)/((x-b(2,2))^2+b(2,3)^2) +  + b(n,1)/((x-b(n,2))^2+b(n,3)^2)

2mnͬʱΪ0

3ڲ⴦

4ҪݶŻģ

5ԷλԼȲҪ, ݶŻģ鵥Żʽ, .

:

x = 0:0.1:30;
x = x';
y = 4.5+15*exp(-(x-16)^2/(2*3^2))+12*exp(-(x-6)^2/(2*5^2)); 
xy=[x, y];
//ԭʼ

[er, y0, a] = MultiPeakFit(xy, 2)//2ֵĸ˹,سõ½
er =
[ 1.5296837820E-05 ]
y0 =
[ 4.50008116660038 ]
a =
[ 14.9987207823800    16.0003132426084    2.99974167731829
  11.9998605230255    6.00058298377635    5.00073074317741 ]