You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab中生成指定协方差矩阵的二维正态分布随机数?

Matlab生成指定二维正态分布数对的实现方法

你提到的通过协方差矩阵平方根做线性变换的思路是完全正确的,完整实现步骤和代码如下:

方法1:基于矩阵平方根的手动实现

% 1. 定义基础参数
sample_num = 36; % 需要生成的数对数量
mu = [0, 0]; % 期望为零向量
C = [1, 0.8; 0.8, 1]; % 目标协方差矩阵

% 2. 计算协方差矩阵的平方根矩阵A
A = sqrtm(C);

% 3. 生成标准二维正态随机数,尺寸为2行sample_num列,每一列对应一组标准正态数对
std_normal = randn(2, sample_num);

% 4. 线性变换得到符合目标分布的样本,转置后为sample_num行2列,每一行就是一组目标数对
result = (A * std_normal)';

运行后result变量就是你需要的36组二维数对。

方法2:调用内置函数快速实现

如果不需要手动实现变换逻辑,可直接调用Matlab统计工具箱的mvnrnd函数一步生成:

mu = [0, 0];
C = [1, 0.8; 0.8, 1];
result = mvnrnd(mu, C, 36);

验证小技巧

你可以执行cov(result)查看生成样本的协方差矩阵,因为样本量较小,结果会在[1, 0.8; 0.8, 1]附近小幅波动,属于正常现象。

内容的提问来源于stack exchange,提问作者Silverlik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:48:04