Grouping sequence within interval
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Benu
le 17 Mai 2020
Commenté : Benu
le 5 Juin 2020
I got stuck in grouping my sequence.
How can I automatically grouping element of sequence? within interval for this case maybe 0.5
suppose I have 3 sequence
V1 = [0.73 0.74 0.77 0.78 0.79 11.17 11.18 11.19 11.20 11.22 11.23];
V2 = [0.71 0.78 0.76 6.04 6.08 6.01 11.38 11.4 11.1] ;
V3 = [0.73 0.74 0.75 4.29 4.33 7.83 7.85 11.38 11.34]
My expectation is to have a group as follows
G1 = {[0.73 0.74 0.77 0.78 0.79] ; [11.17 11.18 11.19 11.20 11.22 11.23]}
G2 = {[0.71 0.78 0.76] ; [6.04 6.08 6.01] ; [11.38 11.4 11.1] }
G3 = {[0.73 0.74 0.75] ; [4.29 4.33] ; [7.83 7.85] ; [11.38 11.34]}
0 commentaires
Réponse acceptée
Thiago Henrique Gomes Lobato
le 17 Mai 2020
Something like this should do the trick for you
V1 = [0.73 0.74 0.77 0.78 0.79 11.17 11.18 11.19 11.20 11.22 11.23];
V2 = [0.71 0.78 0.76 6.04 6.08 6.01 11.38 11.4 11.1] ;
V3 = [0.73 0.74 0.75 4.29 4.33 7.83 7.85 11.38 11.34]
Vsorted = sort(V3); % Works also with V1, V2
NewSeqLocations = find(diff(Vsorted)>0.5); % 0.5 is your interval, i.e, maximum difference between adjacent numbers
NewSeqLocations = [0,NewSeqLocations,length(Vsorted)]; % Last sequence ends at last array element and starts at first element
Seq = cell(length(NewSeqLocations)-1,1); % Save sequences in cell array
for idx=1:length(Seq)
Seq{idx} = Vsorted(NewSeqLocations(idx)+1:NewSeqLocations(idx+1));
end
Seq{:}
ans =
0.730000000000000 0.740000000000000 0.750000000000000
ans =
4.290000000000000 4.330000000000000
ans =
7.830000000000000 7.850000000000000
ans =
11.340000000000000 11.380000000000001
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!