常见分布在matlab的仿真实现方法

在 MATLAB 中进行不同概率分布的仿真,你可以使用内置的函数生成不同分布的随机数。以下是一些常见的分布及其仿真方法的示例。

1. 正态分布 (Normal Distribution)

使用 normrndrandn 函数生成正态分布随机数。

matlab 复制代码
mu = 0; % 均值
sigma = 1; % 标准差
n = 1000; % 样本数量

% 使用normrnd
data_normal = normrnd(mu, sigma, [1, n]);

% 或者使用randn生成标准正态分布 (均值0, 方差1),再进行缩放
data_normal = mu + sigma * randn(1, n);

% 绘制直方图
histogram(data_normal, 30);
title('Normal Distribution');

2. 学生 t 分布 (Student's t Distribution)

使用 trnd 函数生成 t 分布随机数。

matlab 复制代码
v = 5; % 自由度
n = 1000; % 样本数量

data_t = trnd(v, [1, n]);

% 绘制直方图
histogram(data_t, 30);
title('Student''s t Distribution');

3. 均匀分布 (Uniform Distribution)

使用 rand 函数生成均匀分布随机数。

matlab 复制代码
a = 0; % 下界
b = 10; % 上界
n = 1000; % 样本数量

data_uniform = (b-a) * rand(1, n) + a;

% 绘制直方图
histogram(data_uniform, 30);
title('Uniform Distribution');

4. 指数分布 (Exponential Distribution)

使用 exprnd 函数生成指数分布随机数。

matlab 复制代码
lambda = 2; % 速率参数 (λ)
n = 1000; % 样本数量

data_exp = exprnd(1/lambda, [1, n]);

% 绘制直方图
histogram(data_exp, 30);
title('Exponential Distribution');

5. 卡方分布 (Chi-Square Distribution)

使用 chi2rnd 函数生成卡方分布随机数。

matlab 复制代码
k = 4; % 自由度
n = 1000; % 样本数量

data_chi2 = chi2rnd(k, [1, n]);

% 绘制直方图
histogram(data_chi2, 30);
title('Chi-Square Distribution');

6. 伽马分布 (Gamma Distribution)

使用 gamrnd 函数生成伽马分布随机数。

matlab 复制代码
alpha = 2; % 形状参数
beta = 2; % 尺度参数
n = 1000; % 样本数量

data_gamma = gamrnd(alpha, beta, [1, n]);

% 绘制直方图
histogram(data_gamma, 30);
title('Gamma Distribution');

7. 泊松分布 (Poisson Distribution)

使用 poissrnd 函数生成泊松分布随机数。

matlab 复制代码
lambda = 3; % 均值
n = 1000; % 样本数量

data_poisson = poissrnd(lambda, [1, n]);

% 绘制直方图
histogram(data_poisson, 30);
title('Poisson Distribution');

8. 二项分布 (Binomial Distribution)

使用 binornd 函数生成二项分布随机数。

matlab 复制代码
p = 0.5; % 成功概率
N = 10; % 尝试次数
n = 1000; % 样本数量

data_binomial = binornd(N, p, [1, n]);

% 绘制直方图
histogram(data_binomial, 30);
title('Binomial Distribution');

9. Beta 分布 (Beta Distribution)

使用 betarnd 函数生成 Beta 分布随机数。

matlab 复制代码
alpha = 2; % 形状参数
beta = 5; % 形状参数
n = 1000; % 样本数量

data_beta = betarnd(alpha, beta, [1, n]);

% 绘制直方图
histogram(data_beta, 30);
title('Beta Distribution');

10. 绘制多个分布进行比较

如果你想在同一张图上比较不同分布的特性,可以使用 subplot 将多个直方图放在一起:

matlab 复制代码
figure;
subplot(2,2,1);
histogram(data_normal, 30);
title('Normal Distribution');

subplot(2,2,2);
histogram(data_t, 30);
title('Student''s t Distribution');

subplot(2,2,3);
histogram(data_uniform, 30);
title('Uniform Distribution');

subplot(2,2,4);
histogram(data_exp, 30);
title('Exponential Distribution');

总结

通过使用 MATLAB 中内置的概率分布函数,能够生成各种常见分布的数据,并对其进行可视化分析。这对于了解不同分布的特性及其应用非常有帮助。

相关推荐
傻啦嘿哟1 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670791 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
李少兄2 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Seoyoneh2 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
Tangyuewei3 小时前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界3 小时前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
繁星蓝雨4 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
Evand J4 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
杜大哥5 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5555 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python