MATLAB将高斯拟合添加到直方图

时间:2013-11-07 20:11:13

标签: matlab histogram curve-fitting gaussian

我正在尝试将高斯拟合添加到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的尾巴?

在第二个图中,我需要将高斯拟合仅应用于最后一个峰值。我该怎么办?

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

关于您的上一个问题,请参阅How can I access the fitted distribution parameters from the HISTFIT function in Statistiics Toolbox ?

  

通过制作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};