简体   繁体   English

[matlab]使用协方差矩阵创建随机高斯变量

[英][matlab]Creating Random Gaussian variables using covariance matrix

[(Workspace)][1]I created random variables using covariance Matrix. [(Workspace)][1]我使用协方差矩阵创建了随机变量。 I want to generate 300 random two dimensional feature data (length & weight) of each specie ω1 (salmon) and ω 2(bass).我想生成每个物种 ω1(鲑鱼)和 ω2(低音)的 300 个随机二维特征数据(长度和重量)。 Salmon (ω 1): mean: 65 cm, 22 kg covariance: [20 0.1;三文鱼 (ω 1):平均值:65 cm,22 kg 协方差:[20 0.1; 0.1 70] Sea bass (ω 2): mean : 80 cm, 31 kg covariance: [40 5; 0.1 70] 鲈鱼 (ω 2):平均值:80 cm,31 kg 协方差:[40 5; 5 50] After I created Samples, I computed covariance Matrix again just to check out. 5 50] 创建样本后,我再次计算协方差矩阵只是为了检查。 But I found it totally wrong from the original covariance matrix.但我发现它从原始协方差矩阵中完全错误。 Can somebody help me out please?有人可以帮我吗? Attached is my code and different result.附件是我的代码和不同的结果。 Please Help Me :(请帮我 :(

I believe you might be creating the wrong data, try creating it this way:我相信您可能创建了错误的数据,请尝试以这种方式创建它:

% 0. INITILIZATION
clc, clear all, close all
rng default  % For reproducibility
N = 200; %Number of samples

% 1. Data info
mu1 = [65 22]';
mu2 = [80 31]';
mu = [mu1 mu2];
covar1 = [20 0.1;0.1 70];
covar2 = [40 5;5 50];

% Data generation
Dset1 = mvnrnd(mu1,covar1,N)';
Dset2 = mvnrnd(mu2,covar2,N)';
figure('name', 'Data set X and X'''), hold on

% Plot the data
plot(Dset1(1,:),Dset1(2,:), 'b.',Dset2(1,:),Dset2(2,:), 'r.')

Also, if you want to check if the data has indeed the proper covariance, use a bigger N, say 5000 for example.此外,如果您想检查数据是否确实具有适当的协方差,请使用更大的 N,例如 5000。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM