# Find longest consecutive sequence in 3d matrix

2 views (last 30 days)

Show older comments

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 Comments

Dyuman Joshi
on 24 Nov 2021

### Accepted Answer

Matt J
on 29 Nov 2021

Edited: Matt J
on 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);

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!