在MATLAB中叠加两个图

问题描述 投票:1回答:1

我有两个RV,一个unifrom和一个高斯,我想叠加他们的PDF。 (直方图)。我正在尝试保持功能,但它不起作用,因为它仅显示第二个图。我是MATLAB新手,所以将不胜感激

% MATLAB R2019a
% Setup
N = [1:5 10 20 40];
LB = 0;
UB = 3;
n = 10000;

% Generate random variates
X = LB + (UB - LB)*rand(max(N),n);
Sn = cumsum(X); 

mu = 1.5;
sigma = .75;
S_1 = mu + sigma.*randn(n, 1)

hist1= histogram(Sn(1,:),'Normalization','pdf','EdgeColor', 'blue', 'FaceColor',  'blue')
hold on
hist2 = histogram(S_1(:), 'EdgeColor', 'green', 'FaceColor',  'green', 'FaceAlpha', 0.2);
matlab plot histogram probability probability-density
1个回答
0
投票

方法1:使用概率分布对象(需要统计工具箱)您可以使用probability density functions (PDFs)直接绘制probability distribution objects,从而可以利用makedist()makedist()功能。这消除了需要足够大的样本量来凭直方图凭经验估计PDF的需求。

X〜均匀(ab的PDF是从pdf()获得的,其中pdf()包含来自随机变量 X您要在其中评估PDF的位置。

pdf(pdX,x)

x


方法2:您可以使用

轻松实现统一分发的pdf
% MATLAB R2019a
% Setup
a = 0;          % lowerbound for X ~ Uniform(a,b)
b = 3;          % upperbound for X
mu = 1.5;       % mean for Y ~ Normal(mu,sigma)       E[Y] = mu
sigma = 0.75;   % standard dev                        sqrt(Var(Y)) = sigma

% Create distributions
pdX = makedist('Uniform',a,b);                        X ~ Uniform(a,b)
pdY = makedist('Normal',mu,sigma);                    Y ~ Normal(mu,sigma)


Domain = -2:0.1:5;               % Useful for plotting

% Plot
figure, hold on
plot(Domain,pdf(pdX,Domain),'b-','DisplayName','Uniform(0,3)')      % Plot pdf for X
plot(Domain,pdf(pdY,Domain),'k-','DisplayName','Normal(1.5,0.75)')  % Plot pdf for Y
legend('show')

这将不需要任何工具箱。

对于正态分布也可以这样做,因为正态分布是无界的,所以只有一个项。这样可以避免使用“统计”工具箱。或者,您可以使用内置的Plot showing the PDFs for the Uniform(0,3) and Normal(1.5,0.75) random variables.功能(需要统计工具箱)。

您可以获得相同的结果。

fXh =@(x) 0*(x<a) + (1/(b-a))*(a<=x & x<=b) + 0*(b<x);
© www.soinside.com 2019 - 2024. All rights reserved.