0

我正在尝试将高斯拟合添加到 MATLAB 中的直方图,但我不知道如何仅将拟合应用于一个特定的峰值。

http://postimg.org/image/phms61rdh/第一个情节

http://postimg.org/image/sindrn8er/第二个情节

我还发布了我一直在使用的部分代码:

    data_Rb = (importdata('path\name.txt'));
    counts_Rb = data_Rb.data(:,3);
    figure
    hist(counts_Rb, nbins);
    xlim([0 120]);
    title('Rubidium');
    histfit(counts_Rb,1000);

    pd=fitdist(counts_Rb(:),'normal')
    x=0:0.001:120;  
    PDF=pdf(pd,x); %PDF is a vector of y values: it's our fit
    PDF=PDF/max(PDF); %nor
    y=ylim;
    PDF=PDF*y(2);
    hold on
    plot(x,PDF,'r-','LineWidth',2);
    hold off

这两个块给了我两个不同的高斯,如第一张图片所示。我不明白为什么它们如此糟糕地拟合数据:是因为 RHS 的尾巴吗?

在第二个图中,我只需要对最后一个峰值应用高斯拟合。我该怎么做?

最后,应用拟合后,拟合结果输出到屏幕上。是否有将它们保存到数组中以供以后使用的功能?

提前致谢!

4

1 回答 1

0

关于您的最后一个问题,请参阅如何从 Statistics Toolbox 中的 HISTFIT 函数访问拟合分布参数?

通过制作 HISTFIT 函数的副本并修改代码以传递“pd”变量,可以解决此问题。一种方法是将代码第一行的“h”输出更改为“varargout”,并将以下内容添加到文件末尾:

h = [hh; hh1];
argout={h,pd};
if nargout > length(argout)
error('Too many output arguments.');
end
[varargout{1:nargout}]=argout{1:nargout};
于 2013-11-08T01:54:23.760 回答