马尔可夫链蒙特卡洛方法matlab
时间: 2025-04-19 21:54:49 AIGC 浏览: 30
### Markov Chain Monte Carlo (MCMC) 方法简介
Markov Chain Monte Carlo 是一种用于从复杂概率分布中抽样的算法,在贝叶斯统计等领域有广泛应用。该方法通过构建一个具有特定平稳分布的马尔可夫链来近似目标分布[^1]。
### MATLAB 中 MCMC 的基本实现框架
为了在 MATLAB 中实现简单的 Metropolis-Hastings 算法,可以按照如下方式编写代码:
```matlab
function samples = metropolis_hastings(target_pdf, proposal_std, num_samples)
% 初始化参数
current_state = randn(); % 初始状态设为标准正态随机数
states = zeros(num_samples, 1);
for i = 1:num_samples
proposed_state = normrnd(current_state, proposal_std);
acceptance_ratio = target_pdf(proposed_state)/target_pdf(current_state);
if rand() < min([acceptance_ratio, 1])
current_state = proposed_state;
end
states(i) = current_state;
end
samples = states;
end
```
此函数接受三个输入参数:`target_pdf` 表示待采样分布的概率密度函数;`proposal_std` 控制提议分布的标准差大小;`num_samples` 定义所需样本数量。
对于 `target_pdf` 函数的具体形式,则取决于实际应用中的需求。这里提供了一个简单的一维高斯混合模型作为例子:
```matlab
function p = gaussian_mixture(x)
mu1 = -3; sigma1 = 0.8;
mu2 = 3; sigma2 = 1.5;
w1 = 0.7;
p = w1 * exp(-((x-mu1).^2)/(2*sigma1^2)) / sqrt(2*pi*sigma1^2) ...
+ (1-w1)*exp(-((x-mu2).^2)/(2*sigma2^2))/sqrt(2*pi*sigma2^2);
end
```
上述代码展示了如何定义一个多峰的目标分布,并利用 Metropolis-Hastings 算法对其进行有效采样。
阅读全文
相关推荐



















