我有两个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);
方法1:使用概率分布对象(需要统计工具箱)您可以使用probability density functions (PDFs)直接绘制probability distribution objects,从而可以利用makedist()
和makedist()
功能。这消除了需要足够大的样本量来凭直方图凭经验估计PDF的需求。
X〜均匀(a,b的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')
这将不需要任何工具箱。
对于正态分布也可以这样做,因为正态分布是无界的,所以只有一个项。这样可以避免使用“统计”工具箱。或者,您可以使用内置的功能(需要统计工具箱)。
您可以获得相同的结果。
fXh =@(x) 0*(x<a) + (1/(b-a))*(a<=x & x<=b) + 0*(b<x);