matlab使用很长时间的系列

时间:2013-03-20 12:04:33

标签: matlab

我有一个类似于以下内容的数据集:

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))];

返回每个日的最小和最大深度的温度。由此我希望有一种更复杂的方法来获取这些值的整个列。

1 个答案:

答案 0 :(得分:1)

使用datenum为每个时间段指定一个整数索引 然后,您可以使用accumarray两次:一次使用@min,一次使用@max作为"累积"用于计算深度或温度列的分箱值的最小值(最大值)。