Matlab 如何在其他两个矩阵之间按行分割矩阵?

Matlab 如何在其他两个矩阵之间按行分割矩阵?,matlab,matrix,split,row,partitioning,Matlab,Matrix,Split,Row,Partitioning,我有一个矩阵和一个向量,每个矩阵和向量有3000行: fe = [-0.1850 -0.4485; ... -0.2150 2.6302; ... -0.2081 1.5883; ... -0.6416 -1.1924; ... -0.1188 1.3429; ... -0.2326 -2.2737; ... -0.0799 1.4821; ... ... %# lots mo

我有一个矩阵和一个向量,每个矩阵和向量有3000行:

fe = [-0.1850   -0.4485; ...
      -0.2150    2.6302; ...
      -0.2081    1.5883; ...
      -0.6416   -1.1924; ...
      -0.1188    1.3429; ...
      -0.2326   -2.2737; ...
      -0.0799    1.4821; ...
      ... %# lots more rows
      ];

tar = [1; ...
       1; ...
       2; ...
       1; ...
       2; ...
       1; ...
       1; ...
      ...  %#lots more rows
      ];
我想将
fe
tar
的行进行划分,以便将其中的2/3放在一组变量中,其余的1/3放在第二组变量中。这是为了分类(即一组是训练数据,另一组是测试数据)

我有两种可能的方法可以做到这一点:

  • 按顺序拆分行,前2/3在一个矩阵中,后1/3在另一个矩阵中
  • 随机选择2/3的行并将其分配到一个矩阵中,剩余的行放入另一个矩阵中

如何实现这些解决方案中的每一个?

假设需要选择2/3的行和两个列,您可以这样做

feTrain=fe(1:2000,:);
feTest=fe(2001:end,:);
如果要分配随机选取的行的2/3(即,不是前2/3),可以使用
randperm
函数生成行索引的随机顺序,并使用该顺序进行索引

nRows=size(fe,1);
randRows=randperm(nRows);%# generate random ordering of row indices
feTrain=fe(randRows(1:2000),:);%# index using random order
feTest=fe(randRows(2001:end),:);

请原谅我来绘制feTrain如何使用散射,(feTrain有两列)
Scatter
将两个向量作为输入。因此,要绘制第1列和第2列,请执行
scatter(feTrain(:,1),feTrain(:,2))