1

次のように始まるデータセットがあります。

year month  daynum  hour     depth        wtemp
1989    5   136      0          0.01     14.32
1989    5   136      0          0.5      14.32
1989    5   136      0          1        13.52
1989    5   136      0          2        12.31
1989    5   136      0          3        10.16
1989    5   136      0          4        8.61
1989    5   136      0          6        6.86
1989    5   136      0          8        6.03
1989    5   136      0          10       5.45
1989    5   136      1          0.01     13.38
1989    5   136      1          0.5      13.41
1989    5   136      1          1        13.12
1989    5   136      1          2        10.88
1989    5   136      1          3        10.09
1989    5   136      1          4        9.09
1989    5   136      1          6        7.24
1989    5   136      1          8        6.45
1989    5   136      1          10       5.67
1989    5   136      2          0.01     13.2
1989    5   136      2          0.5      13.24
1989    5   136      2          1        13.24
1989    5   136      2          2        11.07
1989    5   136      2          3        10.14
1989    5   136      2          4        9.02
1989    5   136      2          6        7.23
1989    5   136      2          8        6.23
1989    5   136      2          10       5.59
1989    5   136      3          0.01     13.11
1989    5   136      3          0.5      13.15
1989    5   136      3          1        13.11
1989    5   136      3          2        11.26
1989    5   136      3          3        10.25
1989    5   136      3          4         9.2
1989    5   136      3          6         6.99
1989    5   136      3          8         5.96
1989    5   136      3          10        5.5

このデータ セットには、1,000,000 行を超えるデータが含まれています。データを matlab にインポートすると、この構造が残ります (ただし、ヘッダーはありません)。個々の期間ごとに、最小深度と最大深度 (つまり、列 5) のインデックスを返す方法を知りたいですか?

この場合の答えは次のようになります。

1,9
10,18,

and so on.

測定の数、したがって深さの数は調査期間を通じて変化することに注意してください。したがって、年、月、日、時間、および深さの情報を使用する必要があります。

ここでの主な目的は、各時間の最小深度と最大深度で記録された温度のみを含むマトリックスを作成することです。

これまで試してみました(データはマトリックスの名前です):

[~,~,b] = unique(data(:,1:4),'rows');
MaxMin_temp = [abs(accumarray(b,data(:,end),[],@min)), abs(accumarray(b,data(:,end),[],@max))];

これは、個々の日の最小深度と最大深度での気温を返します。これから、これらの値の列全体を取得するより洗練された方法を期待していました。

4

1 に答える 1

1

use datenum to assign each time period an integer index.
Then you can use accumarray twice: once with @min and once with @max as the "accumulating" function to compute the min (max resp.) ot the binned values of the depth or temperature columns.

于 2013-03-20T12:12:55.650 に答える