matlab ——在频数统计图中添加对数正态分布拟合曲线

本文介绍如何使用MATLAB进行一组数据的对数正态分布拟合,并绘制拟合曲线及统计数据图表。通过非线性最小二乘法确定分布参数,并计算极大概率分布位置与期望值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%from this on

fun=@(p,x) p(1)./x.*exp(-((log(x)-p(2))/p(3)).^2/2);%对数正态分布密度函数

x=(0:0.02:6)*1e4;

y=fun([3e5,8.3,0.6],x)+rand(size(x)).*exp(-(x/2e4).^2)*20;

%原来你的图可能是用hist(data,n)画出来的

%就是将data数据分n个区间统计,画柱状图

%这里要保留hist的数据

%原来的语句要返回x y值

%[y x]=hist(data,n);

%这里因为没有数据所以用上边两句模拟x,y数据

bar(x,y,1);hold on;%根据x,y数据画柱状图

[maxy ind]=max(y);

p=nlinfit(x,y,fun,[maxy*x(ind),log(x(ind)),1]);%拟合

%p(1)~和幅度有关    p(2)~mu    p(3)~sigma 

yfit=fun(p,x); %计算拟合曲线

plot(x,yfit,'r','linewidth',2);

xmax=exp(p(2)-p(3)^2);%计算分布极大分布处和值 x=exp(mu-sigma^2);

ymax=fun(p,xmax);

plot([xmax xmax],[0 ymax],'g','linewidth',2);

xmean=exp(p(2)+p(3)^2/2);%计算期望值 x=exp(mu+sigma^2/2)

ymean=fun(p,xmean);

plot([xmean xmean],[0 ymean],'c','linewidth',2);

hold off;

xlim([min(x) max(x)]);

xlabel('BC浓度(ng/m^3)');

ylabel('频数');

legend('统计数据',['对数正态分布:\mu=' num2str(p(2)) ',\sigma=' num2str(p(3))],...

['极大概然分布位置:x=' num2str(xmax)],['期望值位置:x=' num2str(xmean)]);

text(xmean+10000,ymean+10,'$ y=\frac{A}{x}e^{-\frac{(lnx-\mu)^2}{2\sigma^2}} $',...
'interpreter','latex','FontSize',18);

参考:

no1:https://zhidao.baidu.com/question/753137168512272564.html

no2:https://zhidao.baidu.com/question/327808626938436325.html?qbl=relate_question_1&word=matlab%20%D2%BB%D7%E9%CA%FD%BE%DD%C4%E2%BA%CF%D5%FD%CC%AC%B7%D6%B2%BC%C7%FA%CF%DF%B5%C4%B3%CC%D0%F2

no3:https://zhidao.baidu.com/question/327808626938436325.html?qbl=relate_question_1&word=matlab%20%D2%BB%D7%E9%CA%FD%BE%DD%C4%E2%BA%CF%D5%FD%CC%AC%B7%D6%B2%BC%C7%FA%CF%DF%B5%C4%B3%CC%D0%F2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值