怎样用matlab画对数正态分布密度函数图

2024-05-09 04:34

1. 怎样用matlab画对数正态分布密度函数图

1、首先双击matlab软件图标,在命令行窗口使用函数normrnd()创建一个服从正态分布的随机数样本j。

2、在命令行窗口中,使用函数lognrnd(),创建一个服从对数正态分布的随机数样本k。

3、在命令行窗口中输入:subplot(2,1,1);qqplot(k);,将图像分成上下两部分,在图像的上半部分,绘制服从对数正态分度的样本k,与服从正态分布的理论数据的q-q图。

4、在命令行窗口中输入:subplot(2,1,2);qqplot(j,k):将图像分成上下两部分,在图像的下半部分绘制服从对数正态分布的样本k与样本j的q-q图。

5、最后查看绘制对数正态分布的q-q图,就完成了。

怎样用matlab画对数正态分布密度函数图

2. 请问如何用matlab对一列数据画出对数正态分布曲线,并得到如下图所示的参数

close all;clear all;data = xlsread('工作簿数据.xlsx','sheet2','g2:g106556'); %读入数据%测试数据 data = lognrnd(8,.7,10000,1);[y x]=hist(data,200);   %统计频次分布h=bar(x,y,1);  %画直方图hold on;%对数正态分布密度函数fun=@(p,x) p(1)./x.*exp(-((log(x)-p(2))/p(3)).^2/2);%A=p(1),mu=p(2),sigma=p(3)[maxy ind]=max(y); %做非线性数据拟合p=nlinfit(x,y,fun,[maxy*x(ind),log(x(ind)),1]);%画拟合曲线x1 = min(x):0.01:max(x);yfit=fun(p,x1); plot(x1,yfit,'r','linewidth',1);%极大似然处 x=exp(mu-sigma^2);xmax=exp(p(2)-p(3)^2);ymax=fun(p,xmax);plot([xmax xmax],[0 ymax],'g','linewidth',2);%期望值处 x=exp(mu+sigma^2/2)xmean=exp(p(2)+p(3)^2/2);ymean=fun(p,xmean);plot([xmean xmean],[0 ymean],'c','linewidth',2);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);

3. 已知方差和均值,怎么用matlab画出对数正态分布图

ezplot(@(x)normpdf(x,a,b),[m n])
其中a为均值,b为方差,[m,n]为从m到n的正态分布随机数。

已知方差和均值,怎么用matlab画出对数正态分布图

4. matlab 如何用一列Excel数据做对数正态分布拟合曲线

close all;clear all;data = xlsread('数据.xls','sheet1'); %读入数据[y x]=hist(data,100);   %统计频次分布figure('Color','w');h=bar(x,y,1);  %画直方图set(h,'EdgeColor',[0.5 0.5 0.5],'FaceColor',[0.5 0.5 0.5]);hold on;%对数正态分布密度函数) p(1)./x.*exp(-((log(x)-p(2))/p(3)).^2/2);[maxy ind]=max(y); %做非线性数据拟合p=nlinfit(x,y,fun,[maxy*x(ind),log(x(ind)),1]);%画拟合曲线x1 = min(x):0.01:max(x);yfit=fun(p,x1); plot(x1,yfit,'k','linewidth',3);[ymax i] = max(yfit); %找到极值点xm = x1(i);plot([xm xm],[0 ymax+10],'k','linewidth',3); %画竖线xlim([min(x) max(x)]);xlabel('BC浓度(ng/m^3)');ylabel('频数');

5. 如何在matlab中画对数正态分布的图像?如附图那样的。图中左边是R语言

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);

如何在matlab中画对数正态分布的图像?如附图那样的。图中左边是R语言

6. 怎么用matlab验证正态分布,并给出正态分布的表达式

分布的正太性检验:
x为你要检验的数据。
load x
histfit(x);
normplot(x);
从这两个图中可以看出是否近似服从正太分布。
然后估计参数:
[muhat,sigmahat,muci,sigmaci]=normfit(x);
muhat , sigmahat,muci,sigmaci 分别表示均值、方差、均值的0.95置信区间、方差0.95置信区间。
现在可以用t检验法对其进行检验:
现在在方差未知的情况下,检验均值是否为mahat;
[h,sig,ci]=ttest(x,muhat);
其中h为布尔变量,h=0表示不拒绝零假设,说明均值为mahat的假设合理。若h=1则相反;
ci表示0.95的置信区间。
sig若比0.5大则不能拒绝零假设,否则相反。

希望对你有帮助!

7. matlab 求取对数正态分布参数

你输入help
longnrnd后有段显示如下:
r
=
lognrnd(mu,sigma)
returns
an
array
of
random
numbers
generated
from
the
lognormal
distribution
with
parameters
mu
and
sigma.
mu
and
sigma
are
the
mean
and
standard
deviation,
respectively,
of
the
associated
normal
distribution.
mu
and
sigma
can
be
vectors,
matrices,
or
multidimensional
arrays
that
have
the
same
size,
which
is
also
the
size
of
r.
a
scalar
input
for
mu
or
sigma
is
expanded
to
a
constant
array
with
the
same
dimensions
as
the
other
input.
这段文字明确的告诉你了,
r
=
lognrnd
(mu,sigma),返回一个随机产生的对数正态分布
。
mu和sigma的均值和标准差,mu和sigma可以是
vectors,
matrices,
or
multidimensional
array,他们具有相同的大小,和产生的r是一样的。
我翻译水平有限,你自己翻译看看,体会里面的意思吧.
你说的是方差为2.9,不是标准差,
还有问题的话你自己琢磨,多看看help文件有很大的帮助

matlab 求取对数正态分布参数

8. 一个变量服从对数正态分布在matlab中怎么表示

lognrnd得到的是无单位的量,用它得到的是一组其自然对数满足正态分布的随机数,而不是本身就满足正态分布的dB值。
dB通常都是以"20log10()”定义的吧(如果是功率之类的就是10log10()),其对数的底数为10,而lognrnd应该得到的是自然对数,需要转化一下。
最新文章
热门文章
推荐阅读