Grouping sequence within interval
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Benu
am 17 Mai 2020
Kommentiert: Benu
am 5 Jun. 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 Kommentare
Akzeptierte Antwort
Thiago Henrique Gomes Lobato
am 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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!