一个快速的解决方案是按年、月、日和 分组unique(),然后计算每天的观察次数,并通过两步逻辑索引accumarray()排除那些少于 24 个 obs 的观察:
% Count observations per day
[unDate,~,subs] = unique(DateV(:,1:3),'rows');
counts = [unDate accumarray(subs,1)]
counts =
        2009           1           1          22
        2009           1           2          24
        2009           1           3          24
        2009           1           4          24
        2009           1           5          23
然后,将条件应用于计数并检索逻辑索引
% index only those that meet criteria
idxC = counts(:,end) == 24
idxC =
      0
      1
      1
      1
      0
% keep those which meet criteria (optional, for visual inspection)
counts(idxC,:)
ans =
        2009           1           2          24
        2009           1           3          24
        2009           1           4          24
最后,通过第二轮逻辑 indexinf找到Dat落入 selected的成员:countsismember()
idxDat = ismember(subs,find(idxC))
Dat(idxDat,:)