2011-03-22 92 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