数据产生器-matlab

来源:互联网 发布:淘宝单坑是什么意思 编辑:程序博客网 时间:2024/06/07 11:24

编写一个名为data_generator的MATLAB函数,用于产生两类、两维的数据集合,这个集合使用了4个正态分布,协方差矩阵Si=s*I, i = 1,...,4 其中I是一个2*2的单位矩阵。来自前两个分部的向量属于类+1,来自另外两个分部的向量属于类-1.下面是这个函数的输入变量:

(a)一个2*4的矩阵m,其中这个矩阵的第i列是第i个分布的平均向量;

(b)以前曾提到的方差参数S;

(c)从每个分布中产生的点数N;

函数的输出:

(I)一个2*4*N维的数组X,第一组的N个向量来自于第一个分布,第二组的N个向量来自于第二个分布,等等;

(II)一个4*N的行向量y,行向量的元素等于+1或-1,表示X中对应的数据向量所属的类。

 

solution:

 

function [x,y]=data_generator(m,s,N)
S=s*eye(2);   %其中I是一个2*2的单位矩阵
[l,c]=size(m);
x=[]; %创造训练集
for i=1:c
    x=[x mvnrnd(m(:,i)',S,N)'];
end
y = [ones(1,N)*ones(1,N)-ones(1,N)-ones(1,N)]