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

MはMatLabマトリックスだと言います。次に、find(M(:、1)== 7)は、探している行のインデックスを提供します。また、M(M(:、1)== 7、:)のようなことをして、対応する部分行列にアクセスすることもできます。

于 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 に答える