本篇文章主要讲解在matlab环境下,如何随机生成满足高斯分布的样本点。
众所周知,高斯分布是一种很常见的数据分布,也是很多实际例子中出现最多的一种分布。我们今天就来学习在matlab环境下绘制出随机分布的满足高斯分布的数据点。
1.二维空间二分类问题
%%参数设置
mean = [2 3]; %%均值
SIGMA = [1 0;0 2]; %%协方差矩阵,假设各维度独立,故可设为对角阵
r = mvnrnd(mean,SIGMA,100); %%最后一个参数表示生成该类100个样本点
plot(r(:,1),r(:,2),'r+');
grid on; %%描绘出网格
hold on; %%停留在图中,
mean = [4 2];
SIGMA = [1 0;0 2];
r2 = mvnrnd(mean,SIGMA,100);
plot(r2(:,1),r2(:,2),'b*')
grid on;
以上很多都是绘图的一些基本命令,最重要的是mvnrnd(mean,SIGMA,100)这个函数,第一个参数表示随机生成的样本点的均值,第二个参数表示这些样本点的协方差矩阵,我们可以假设各维度相互独立,也就是设为对角阵(只有主对角线上的元素不为0),第三个参数100表示生成100个样本点。plot就是绘制图像的函数,前两个参数分别对应的是样本点的第一维和第二维的值,而第三个参数表示'r+',用红色的+标记。那么我们可用的颜色和标记符号有哪些呢? 请参照下面这张图就好了。
2.二维空间三分类问题
mean = [2 3]; %%均值
SIGMA = [1 0;0 2]; %%协方差矩阵,假设各维度独立,故可设为对角阵
r = mvnrnd(mean,SIGMA,100); %%最后一个参数表示生成该类10个样本点
plot(r(:,1),r(:,2),'r+');
grid on; %%描绘出网格
hold on; %%停留在图中,
mean = [7 8];
SIGMA = [1 0;0 2];
r2 = mvnrnd(mean,SIGMA,100);
plot(r2(:,1),r2(:,2),'b*')
grid on;
hold on;
mean = [4 6]
SIGMA = [1 0;0 4];
r3 = mvnrnd(mean,SIGMA,100);
plot(r3(:,1),r3(:,2),'gs')
3.三维三分类问题
mean = [2 3 4]; %%均值
SIGMA = [1 0 0;0 2 0;0 0 3] %%协方差矩阵,假设各维度独立,故可设为对角阵
r = mvnrnd(mean,SIGMA,10); %%最后一个参数表示生成该类10个样本点
plot3(r(:,1),r(:,2),r(:,3),'r+');
grid on; %%描绘出网格
hold on; %%停留在图中,
mean = [7 8 9];
SIGMA = [1 0 0;0 2 0;0 0 4];
r2 = mvnrnd(mean,SIGMA,10);
plot3(r2(:,1),r2(:,2),r2(:,3),'b*')
grid on;
hold on;
mean = [4 8 13]
SIGMA = [1 0 0;0 2 0;0 0 4];
r3 = mvnrnd(mean,SIGMA,10);
plot3(r3(:,1),r3(:,2),r3(:,3),'gs')
这里需要注意的是,绘制三维图像时,与二维平面图唯一的区别是plot函数,变成了plot3函数,参数的个数也增加了一维度。
如有问题,欢迎私信和QQ交流~