Saturday, December 5, 2015

Matlab: Gaussian Model

Summary

开贴记录数据拟合之高斯函数。
已知一组数据,x表示数值,y表示频率,如Fig. 1所示,图形非常接近高斯分布。
Fig. 1

Method

(1)拟合高斯模型,手动方法
在Command Window,键入cftool,出现Curve Fitting Tool。如Fig. 2所示,配置xy及Gaussian。
Fig. 2
配置完成后,软件自动得到返回参数,R-square达0.9814,非常高,右侧图形也显示拟合高斯曲线与原始情况较为吻合。(试试改变图中Number of terms?)
此时得到的高斯函数:
\[f\left( x \right) = 1946 \cdot {e^{ - {{\left( {\frac{{x - 442.9}}{{82.13}}} \right)}^2}}}\]
(2)代码方法
见Codefit.m,与手动方法返回结果一致。如Fig.3所示,Fitted Curve是为高斯曲线。Over。
Fig. 3

Further Discussion

尽管该数据通过高斯拟合方法可以使得被解释的方差高达98%,但是该高斯函数的二阶导数等于0的解仍不能得到实数,更准确的说通过拟合逼近这一曲线仍不能得到该曲线的拐点。参考Blocking A Non-Stationary Signal Using Wavelets,将这一曲线视为非平稳信号,经连续小波变化(Mexican hat)处理,直接得到这一信号的二阶导数,找到二阶导数为0的序列。
Fig. 4
Fig. 4从左至右的2图表示1~200尺度下的二阶导数,显然在Scale大于75之后,黑线仅与两条0等值线相交,3、4图表示Scale=100/150的情况,对应拐点是469和383。

References

No comments:

Post a Comment