在MATLAB中生成给定均值和标准差的随机数据?

时间:2013-01-19 00:35:14

标签: matlab random statistics mean

我的数据RV有限,我可以找到平均μ和标准差sigma。现在我想生成更多数据点,保持相同的mu和sigma。我将如何在MATLAB中执行此操作?我做了以下操作,但是当我绘制生成数据的平均值(mu_2)时,它与mu ...不匹配

N = 15
R = mean(RV) + std(RV)*randn(N, 1);
mu = mean(RV)*ones(N,1);
mu_2 = mean(R)*ones(N,1);

3 个答案:

答案 0 :(得分:3)

我认为你应该使用 normrnd(mu,sigma)函数 转到documentation获取更多详细信息

祝你好运

答案 1 :(得分:1)

看起来很正确。对于如此小的样本量,你不太可能获得非常好的匹配。尝试更大的N值。

如果你想强制你的数据集到特定的平均值和stddev,那么你可以生成一组样本,然后测量它们的均值和stddev,然后通过缩放和标量加法进行调整

例如:

R = randn(N,1);

% Measure
mu_tmp = mean(R);
std_tmp = std(R);

% Normalise and denormalise
R = (R - mu_tmp) / std_tmp;
R = (R * std_desired) + mu_desired;

答案 2 :(得分:0)

你也可以使用Netlab库生成高斯混合物(它是免费的!)

mix=gmm(8,3,'spherical');
[Data, Label]=gmmsamp(mix,1000);

以上生成的数据集包含8个维度和3个中心(球形),超过1000个观测值。