2011-03-22 128 views
5

我有一个矩阵和一个向量中每个具有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的行分配到一个矩阵,并将余数放在另一个矩阵中。

我该如何实现每个解决方案?

回答

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),:); 
+0

对不起绘制feTrain你怎么用散点图(feTrain有2列) – cMinor 2011-03-22 00:40:00

+0

'scatter'需要2个向量作为输入。因此,要绘制第一列vs第二列,请执行'scatter(feTrain(:,1),feTrain(:,2))' – abcd 2011-03-22 01:38:11