根据指定的值顺序拆分矩阵

时间:2012-07-24 12:39:17

标签: matlab sorting matrix

很抱歉,如果之前有人问这个问题,但我似乎无法找到合适的答案!

我在Matlab中有这种矩阵:

1  0.2   0.3    1  5
1  0.25  0.36   1  6
1  0.3   0.3   -1  5
2  0.1   0.3    1  5
2  0.3   0.3   -1  5
2  0.6   0.4   -1  9 ......

矩阵实际上要长得多,并且在第一列中的值为346。

如何根据第一列中值的特定顺序将矩阵拆分为更小的矩阵?例如,我需要按顺序排列第一列= 160,130,256,2的所有值的矩阵?

2 个答案:

答案 0 :(得分:3)

说M是你的MatLab矩阵。然后find(M(:,1)== 7)为您提供您要查找的行的索引。此外,您可以执行类似M(M(:,1)== 7,:)的操作来访问相应的子矩阵

答案 1 :(得分:1)

使用grep执行此操作:

grep -E '^(160|130|256|2)[ \t]'

更新

matlab中,您可以使用比较运算符,例如如果data是矩阵:

 data(data(:, 1) == 1, :)

将返回第一列值为1的子矩阵。要将它应用于您的示例,可以执行以下操作:

subm = [];
for i=[160, 130, 256, 2]
   subm = [subm; data(data(:, 1) == i, :);
end