曲线拟合——拉普拉斯/瑞利/对数正态 曲线

Posted 桂。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了曲线拟合——拉普拉斯/瑞利/对数正态 曲线相关的知识,希望对你有一定的参考价值。

作者:桂。

时间:2017-03-15  21:12:18

链接:http://www.cnblogs.com/xingshansi/p/6556517.html 

声明:欢迎被转载,不过记得注明出处哦~


 

本文为拟合系列中的一部分,主要介绍拉普拉斯曲线 、瑞利曲线、对数正态曲线的拟合,并给出理论推导。

 

 

一、理论分析

  A-拉普拉斯(Laplace)

对于拉普拉斯分布:

$f(x) = \\frac{1}{{2b}}{e^{ - \\frac{{\\left| {x - \\mu } \\right|}}{b}}}$

假设数据点{$x_i$,$y_i$}($i = 1,2,3,...N$)符合Laplace分布曲线,对其进行拟合(曲线拟合不同于分布拟合,需要乘以幅度$A$),给出准则函数:

 

对准则函数$J_0$求解即可实现参数估计。

由于求导比较复杂(可以借助Mathmatica/Maple),因此这里换一个思路:如果$e^x$—>$y$,则$x$—>$lny$,重新定义准则函数:

后续求参就方便了。

给出调用fit实现的代码:

clc;clear all;close all;
%generate the orignal data
mu = 3;
b = 2;
A = 4;
x=-10:.1:10;
y=A/2/b*exp(-abs(x-mu)/b)+0.05*randn(1,length(x));
subplot 211
scatter(x,y,\'k\');grid on;
 
%%curve fitting
%2-Laplace distribution
f = fittype(\'a*exp(-(abs(x-b)/c))\');
[cfun,gof] = fit(x(:),y(:),f);
yo = cfun.a*exp(-(abs(x-cfun.b)/cfun.c));
%plot
subplot 212
scatter(x,y,\'k\');hold on;
grid on;
plot(x,yo,\'g--\',\'linewidth\',2);

对应结果图:

  B-瑞利(Rayleigh)

对于瑞利分布:

$f(x) = \\frac{x}{{{\\sigma ^2}}}{e^{ - \\frac{{{x^2}}}{{2{\\sigma ^2}}}}}$

给出准则函数:

只涉及一个参数$\\sigma$,同样是利用对数转化,进而求取参数估计。

  C-对数正态(Log-normal)

对数正态就是正态分布的变形,即$lnx$—>$x$,求参过程完全一致,可以参考:正态曲线拟合

 

二、拟合优化

对于求取对数的估计准则,都会有误差在0处较大的问题。关于优化的小trick,在分析正态分布曲线拟合时,已经给出详细理论,此处不再展开。

以上是关于曲线拟合——拉普拉斯/瑞利/对数正态 曲线的主要内容,如果未能解决你的问题,请参考以下文章

C++曲线拟合代码

python 拟合曲线并求参

超拉普拉斯分布的函数,概率密度函数

如何用MATLAB做数据正态分布拟合图像

已知所有点,怎么用OpenCV写正弦的拟合曲线?

matlab练习程序(修正指数曲线拟合)