我有一个类似于以下内容的数据集:
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))];
它返回每一天的最小和最大深度的温度。由此,我希望有一种更复杂的方法来获取这些值的整个列。