Un possibile approccio potrebbe essere:
[*] calcolare la differenza tra due elementi consecutivi del vettore con la funzione "diff"
[*] identificare, nel vettore delle differenze, gli elementi diversi da 1 con la funzione "find". Se la differenza è diversa da 1 i due i-esimi numeri non sono consecutivi. Gli elementi dell'array creato in questo modo rappresentano gli indici delle sezioni di elementi consecutivi nell'array di input
[*] estrarre con un loop elementi dal vettore di input in un cellarray in base agli intervalli identificati
Una possibile implementazione potrebbe essere:
% Creazione di un set di dati di esempio
SS=(1:60)
r=unique(sort(randi([3 60],1,4)))
SS(r)=[]
% Calcolo dell adifferenza tra due elementi consecutivi dell'array
z=diff(SS);
% Ricerca dei valori della differenza diversi da 1 (se la differenza tra
% due valori è diversa da 1, i due valori non sono consecutivi)
% I valori dell'array rappresentano i limiti degli intervalli delle varie
% sezioni di elementi consecutivi
z1=find(z~=1);
% Inizializzazione del contatore degli elementi del cellarray
cnt=1;
% Settaggio del primo elemento del cellarray
res{cnt}=SS(1:z1(1))
% Loop sui reatanti elementi del set di intervalli
for i=1:length(z1)-1
cnt=cnt+1
res{cnt}=SS(z1(i)+1:z1(i+1))
end
% Settaggio dell'ultimo set di elementi
res{cnt+1}=SS(z1(end)+1:length(SS))
% Ricerca dell'elemento più lungo del cellarray
% n_elem: numro di elementi della sequenza
% idx: indice del vettore sequewnza nel cellarray di output
[n_elem,idx]=max(cellfun(@length,res))
fprintf('La sequeza più lunga è conposta da %d elementi\n',n_elem)
% Assegnazione della sequanza più lunga alk vettore di output
SS_new=res{idx}