怎样用matlab产生两类别的高斯数据??
现在要用一个2维的人造数据集来仿真数据,该数据集产生自两个零均值,协方差矩阵分别是:[5,0;0,.2]和[.2,0;0,5]的高斯类别。对于每一类,随机产生50个数据点...
现在要用一个2维的人造数据集来仿真数据,该数据集产生自两个零均值,协方差矩阵分别是:[5,0;0,.2]和[.2,0;0,5]的高斯类别。对于每一类,随机产生50个数据点以做仿真只用。请问怎么生成这个两类别的数据?
展开
1个回答
展开全部
你这个题很简单啦。不用使如碰用cholesky分解就可以直接做局销了~
因为你给的两个协方差矩阵都是对角线矩阵,这意味着两次二维变量的各维之间是不相关的,对于高斯过程也就是相互独立的,那么你就可以直接利用randn函数来生成数据。对角线上的值渣腊谈就是各自的方差。
第一组数据(假设a为第一维,b为第二维):
a=sqrt(5)*randn([50,1]);
b=sqrt(0.2)*randn([50,1]);
第二组数据类似的产生。
PS.由于你只产生50个点,所以利用仿真点算出的协方差矩阵很可能跟你的条件会有一定的差异,比如我一次算出的协方差矩阵是[4.5825,0.0962;0.0962,0.1952;],这个值会随着你点数的增多而变的更加稳定而且趋向于你的条件值。比如我去10000个点的时候,就会得到[4.8099,0.0005;0.0005,0.2058]这样的协方差矩阵。
因为你给的两个协方差矩阵都是对角线矩阵,这意味着两次二维变量的各维之间是不相关的,对于高斯过程也就是相互独立的,那么你就可以直接利用randn函数来生成数据。对角线上的值渣腊谈就是各自的方差。
第一组数据(假设a为第一维,b为第二维):
a=sqrt(5)*randn([50,1]);
b=sqrt(0.2)*randn([50,1]);
第二组数据类似的产生。
PS.由于你只产生50个点,所以利用仿真点算出的协方差矩阵很可能跟你的条件会有一定的差异,比如我一次算出的协方差矩阵是[4.5825,0.0962;0.0962,0.1952;],这个值会随着你点数的增多而变的更加稳定而且趋向于你的条件值。比如我去10000个点的时候,就会得到[4.8099,0.0005;0.0005,0.2058]这样的协方差矩阵。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询