用matlab画出概率密度分布图

用matlab画出概率密度分布图,第1张

方法和详细的 *** 作步骤如下:

1、第一步,在matlab的主界面中,将出现相关窗口,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,直接通过命令行窗口输入初始化内容,见下图红框处,转到下面的步骤。

3、第三步,完成上述步骤后,需要根据图标的输入绘制图像,见下图红框处代码,转到下面的步骤。

4、第四步,执行完上面的 *** 作之后,输入相应的内容来添加标签,见下图,转到下面的步骤。

5、第五步,执行完上面的 *** 作之后,请按Enter键确认,概率密度分布图就画好了,见下图。这样,就解决了这个问题了。

可以看一些关于舍选法,反变换法。

就是通过一些变换,将均匀随机数,变成一定概率密度的随机数。

主要还是反变换法,不过反变换法一般要求被积函数可积。

GOODLUCK

你说的是已知样本值了,然后统计估计其概率密度么?

可以这样,假设你已经有了一组数据是a,我这自己产生啦~

a=randn([10000,1]);

ksdensity(a);

这样就可以得到它的概率密度函数了~

当然这个函数也可以有输出,具体的你可以help一下~

1、首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。

2、分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行 *** 作,分别用三个plot进行绘图。

3、需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句hold on,即可将该图保留,使它不被后面的图所覆盖。

4、这样就可以将三条曲线画在一张图上,为了区别,要分别给这三条曲线定义不同的颜色。

5、为了图的美观,我们可以用grid on添加网格线,还需要添加横纵坐标轴标题。

6、因为我们画的是多条曲线,因此还需要添加图例。

函数pdf 及其整个家族都可以用来计算,你可以help一下。最简单的就是用ksdensity:

比如:

[f, x] = ksdensity(randn(100000, 1));

plot(x, f)

N=10000; %需要随机数的个数

a=zeros(N,1); %存放随机数的数列

n=0;

f1=@(t) 1/(12pi(1+5(t-73)^2));

f2=@(t) 1/(105pi(1+6(t-82)^2));

tt=linspace(0,24,1000);

ff=f1(tt)(tt<=75)+f2(tt)(tt>75);%根据公式计算概率密度

s=trapz(tt,ff);  %计算整个区间概率密度的积分

ff=ff/s;         %归一化概率密度

while n<N

    t=rand(1)24;%生成[0,24]均匀分布随机数

    if t<=75

        f=f1(t)/s;

    else

        f=f2(t)/s;

    end         %计算对应密度函数值f(t)

    r=rand(1);  %生成[0,1]均匀分布随机数

    if r<=f     %如果随机数r小于f(t),接纳该t并加入序列a中

        n=n+1;

        a(n)=t;

    end

end

%以上为生成随机数列a的过程,以下为统计检验随机数列是否符合分布

num=100;         %分100个区间统计

[x,c]=hist(a,num);    %统计不同区间出现的个数

dc=24/num;        %区间大小

x=x/N/dc;         %根据统计结果计算概率密度

bar(c,x,1); hold on;  %根据统计结果画概率密度直方图

plot(tt,ff,'r'); hold off; %根据公式画概率密度曲线

一下是某一次运行的结果,可以看到生成的随机序列的统计直方图和公式曲线是符合的

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12181676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存