Matlab 如何在其他两个矩阵之间按行分割矩阵?
我有一个矩阵和一个向量,每个矩阵和向量有3000行: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
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))