2016-06-15 24 views
0

Ich habe ein Array der Nicht-Null-Spalten eines Arrays, die streng erhöht, aber durch Lücken unterbrochen. Ich muss den Durchschnitt der Nicht-Null-Spalten nehmen, aber in Bezug auf die Brüche.Teilen eines Arrays in ununterbrochene zunehmende Sequenzen

Zum Beispiel, wenn das Array

a = [2,3,4,5,6,8,9,10] 

war ich durchschnittlich Spalten benötigen würde [1,2,3,4,5,6] und [7,8,9,10] getrennt (das extra am Anfang ist, wenn die zugrunde liegenden Signaländerungen).

dieser Code:

output = accumarray(cumsum([0; diff(a(:))] < 0)+1, a, [], @(x) {x})

wird das Array in zunehmenden Sequenzen aufgeteilt, durch Abnahmen unterbrochen.

Wie teile ich das Array in zunehmende Sequenzen, die durch Lücken unterbrochen werden?

Antwort

3

Ich habe es herausgefunden!

output = accumarray(cumsum([0; diff(a(:))] > 1)+1, a, [], @(x) {x}) 

erledigt die Arbeit.

Ich musste nur überprüfen, wenn diff (a (:)) größer als 1 war!