如何在 matlab 中绘制同一张图中的两个分布,包括轴标签和用于区分两个分布的图例

问题描述 投票:0回答:2

考虑两个正态(高斯)分布:第一个分布的特征是 μ=10,σ=3。第二个特点是μ=10,σ=1

matlab distribution gaussian
2个回答
0
投票

首先计算这两个分布的概率密度函数。您可以使用此代码计算它,

function f = gauss_distribution(x, mu, s)
p1 = -.5 * ((x - mu)/s) .^ 2;
p2 = (s * sqrt(2*pi));
f = exp(p1) ./ p2;

假设您有两个数据集 x1 和 x2。然后,

f1 = gauss_distribution(x1,10,3);
f2 = gauss_distribution(x2,10,1);

现在绘图可以这样完成,

figure;
plot(x1,f1);
hold on;
plot(x2,f2,'r');
xlabel('name of label');
legend('1st dataset', '2nd dataset');

0
投票

MATLAB 通过

makedist()
pdf()
cdf()
命令极大地简化了许多发行版的此过程。下面的代码和结果图供参考。

pd1 = makedist('Normal',10,3);
pd2 = makedist('Normal',10,1);
X = [0:.01:20]';

% PDF plot
figure, hold on, box on
p(1) = plot(X,pdf(pd1,X),'b-','DisplayName','N(\mu = 10, \sigma = 3)')
p(2) = plot(X,pdf(pd2,X),'k-','DisplayName','N(\mu = 10, \sigma = 1)')
title('Two Normal Distributions (PDFs)')
xlabel('X')
ylabel('PDF')
legend('show')
set(p,'LineWidth',2.2)

% CDF plot
figure, hold on, box on
p(1) = plot(X,cdf(pd1,X),'b-','DisplayName','N(\mu = 10, \sigma = 3)')
p(2) = plot(X,cdf(pd2,X),'k-','DisplayName','N(\mu = 10, \sigma = 1)')
title('Two Normal Distributions (CDFs)')
xlabel('X')
ylabel('CDF')
legend('show','Location','southeast')
set(p,'LineWidth',2.2)

© www.soinside.com 2019 - 2024. All rights reserved.