Find longest consecutive sequence in 3d matrix
    7 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have a large 3d matrix (latitude x longitude x time) and need to find the longest consecutive time sequence of values <=1 for each latitude/longitude pair. I have a dummy code that works on 1d data, but I am struggling to translate it to my 3d data. Also attaching a smaller piece of my 3d data file. Any help appreciated. 
Dummy 1d code:
x = [0.1 1 0.1 0.11 0.3 3 0.1 11 0.3 0.3 0.3 0.13 10 1 0.3 3 3 0.1 0.1 3 3]; %made up numbers 
x(x <= 1) = 0;   % setting al values <=1 to 0
f = find(diff([1,x,1]==0)); 
p = f(1:2:end-1);  % Start indices
y = f(2:2:end)-p;  % Consecutive zeros
dry_max = max(y);  %calculate longest sequence of 0s
3 件のコメント
  Dyuman Joshi
      
      
 2021 年 11 月 24 日
				How exactly do you want to find the longest consecutive sequence in 3D data? What will be the order of the sequence? Can you show an example? 
採用された回答
  Matt J
      
      
 2021 年 11 月 29 日
        
      編集済み: Matt J
      
      
 2021 年 11 月 29 日
  
      Using,
[M,N,P]=size(prec);
prec=permute(prec,[3,1,2]);
prec=prec(:,:)<=1;
prec(end+1,:)=0;
[starts,stops,runlengths]=groupLims(groupTrue(prec(:)),1);
A=accumarray(starts,runlengths,size(prec(:)));
A=ipermute(reshape(A,[P+1,M,N]),[3,1,2]);
[dry_max,p]=max(A,[],3);
その他の回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で Logical についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


