【问题标题】:Matlab gmdistribution.fit only finding one peakMatlab gmdistribution.fit 只找到一个峰值
【发布时间】:2014-09-23 07:03:01
【问题描述】:

我有一个名为 Area 的数组,其中包含一组值。 数组的直方图是这样的

在这种情况下,bin 宽度为 60。我想将两个高斯拟合到这里的两个峰(即使它不是一个很好的拟合)。

所以我用了:

options = statset('Display','final');
obj = gmdistribution.fit(area,2,'Options',options);
gausspdf = pdf(obj, xaxis);
A = sum(gausspdf);
gausspdf = gausspdf/A;

但是当我尝试绘制两个拟合的高斯曲线时,结果曲线如下所示:

我很困惑,因为图中应该出现两个峰值?

【问题讨论】:

    标签: matlab gaussian data-fitting


    【解决方案1】:

    gmdistribution.fit 方法根据最大似然准则拟合数据;也就是说,它试图找到在给定数据的情况下最大化可能性的参数。它不一定符合您在视觉上看到或期望的内容。尽管如此,该算法仍有可能收敛到“坏”的局部最小值。您可以尝试根据您想要获得的结果设置初始条件,实际上“帮助”算法收敛到所需的结果。您可以使用 fit 方法的 Start 选项来执行此操作,这使您可以给它一个初始猜测,在这种情况下,您应该尝试从直方图中估计参数,或者为每个数据样本提供一个初始分量索引。有关详细信息,请参阅documentation

    【讨论】:

      【解决方案2】:

      我认为你的峰太近了,函数无法区分它们。因此,也许您应该更改 gmdistribution 的选项或首先将非线性函数应用于您的数据,以在直方图中获得更多单独的峰值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        • 2014-11-28
        • 2014-04-19
        • 2017-12-23
        相关资源
        最近更新 更多