我正在尝试将高斯拟合添加到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的尾巴?
在第二个图中,我需要将高斯拟合仅应用于最后一个峰值。我该怎么办?
最后,在应用拟合后,将拟合结果输出到屏幕上。是否有将它们保存到数组中以便以后使用的功能?
提前致谢!
答案 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};