如何在另外两个矩阵之间按行划分/拆分矩阵?

时间:2011-03-22 00:00:17

标签: 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 more rows
      ];

tar = [1; ...
       1; ...
       2; ...
       1; ...
       2; ...
       1; ...
       1; ...
      ...  %#lots more rows
      ];

我想将fetar的行分开,以便将其中的2/3放入一组变量中,剩余的1/3放入第二组变量。这是出于分类目的(即一组是训练数据,另一组是测试数据)。

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

  • 按顺序拆分行,第一个2/3在一个矩阵中,最后1/3在另一个矩阵中。
  • 随机选择并将2/3行分配到一个矩阵,并将余数放在另一个矩阵中。

如何实施这些解决方案?

1 个答案:

答案 0 :(得分:13)

假设您需要选择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),:);