2017-03-10 4 views
1

Die Idee ist es, den Mittelwert der festen Intervalle in der Spalte zu berechnen.Mittelwert des festen Intervalls in der Spalte

Zum Beispiel ist ein 30x1 A Vektor

A = [1.99116598579953 
1.99130458744713 
1.99130275791797 
1.99130076212379 
1.99129732263637 
1.99129554481068 
1.99129253092248 
1.99128919331283 
1.99128626646018 
1.99128246022340 
1.99127910416334 
1.99127449885866 
1.99126838746186 
1.99126266917557 
1.99125588988770 
1.99124956601103 
1.99126589366625 
1.99124606011343 
1.99126958257006 
1.99123953491790 
1.99120496980550 
1.99117314162230 
1.99113868160464 
1.99110378123068 
1.99106504737775 
1.99103199236620 
1.99099943597514 
1.99097000143012 
0.0845141896302122 
0.0755554572754849]; 

Das feste Intervall 3, das bedeutet, der Ausgang B ist ein 10x1 Vektor Mittelwert jedes Intervalls enthält.

Wie kann ich das erreichen?

Antwort

1

Methode 1: Unkomplizierte Gruppenelemente in A in Triplets und dann mean.

% method 1 
B1 = reshape(A,3,10); 
B1 = mean(B1,1)'; 

Methode 2: Erstellen Indexmatrix und dann mean jede Gruppe von Index. Auf diese Weise können Sie die Indexnummer bei Bedarf individuell anpassen.

% method 2 
B2 = bsxfun(@plus, repmat(0:3:27,3,1), [1;2;3])'; 
B2 = mean(A(B2),2); 

Methode 3: Gruppe die Elemente in A und dann gelten splitapply die Gruppierung nach. Sie können das Gruppierungsmuster frei ändern.

% method 3 
B3 = repmat(1:10,3,1); 
B3 = splitapply(@mean, A,B3(:)); 
+0

Erstens, danke für Ihre Antwort. Bei der Umformfunktion können jedoch einige Probleme auftreten, wenn die Vektornummer nicht teilbar ist. Ich finde den r0 = Mittelwert (Puffer (A, 3)) ist ein besserer Weg, um meine Frage zu lösen. –

Verwandte Themen