1

抱歉,如果以前有人问过这个问题,但我似乎找不到适用的答案!

我在 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 的所有值的矩阵?

4

2 回答 2

3

Say M is your MatLab matrix. Then find(M(:,1) == 7) gives you the indices of those rows you are looking for. Also, you may do something like M(M(:,1) == 7,:) to access the corresponding submatrix

于 2012-07-24T13:09:10.880 回答
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
于 2012-07-24T13:02:22.490 回答