Find longest consecutive sequence in 3d matrix

2 vues (au cours des 30 derniers jours)
Elin Jacobs
Elin Jacobs le 22 Nov 2021
Commenté : Elin Jacobs le 29 Nov 2021
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 commentaires
Dyuman Joshi
Dyuman Joshi le 24 Nov 2021
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?
Elin Jacobs
Elin Jacobs le 29 Nov 2021
The attached data file contains rainfall data at the daily time scale for one year (third dimension). I want to find the longest sequence of no rainfall (or rainfall less than 1 mm) at each latitude and longitude (first and second dimension). So the result I want (using the example data file) is a 20 by 30 matrix with a single value for the maxiumum number of days with no rain at each lat/lon pair. I hope that makes it more clear. Thank you.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 29 Nov 2021
Modifié(e) : Matt J le 29 Nov 2021
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);
  1 commentaire
Elin Jacobs
Elin Jacobs le 29 Nov 2021
This works great, thank you very much!

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by