2016-07-04 7 views
0

Läßt Bild dort ist eine 24x5 Matrix M mit 1 Stunde Daten (24 Werte jeder) von 5 verschiedenen variablen Typen.Zeitlicher Durchschnitt einer Datenmatrix

Ich mag es, die Daten zu z. 4 Stunden bedeutet.

Gibt es einen besseren Weg, es dann mit drei solcher Umformungen zu tun?

M = reshape(nanmean(reshape(reshape(M,1,[]), 4, [])), [], 5) 

Oder vielleicht besser zu lesen:

M = reshape(M,1,[]); 
M = reshape(M,4,[]); 
M = nanmean(M); 
M = reshape(M,[],5); 

Vielen Dank für Ihre Antworten.

+0

Was ist falsch an Ihrem aktuellen Ansatz? Es könnte vereinfacht werden zu 'nanmean (umformen (M, 4, 6, []), 1)' – Suever

+0

Ich denke, es ist nicht falsch, aber für mich sah es ein wenig unerfahren codiert (wie Hin und Her :) Ich mag Ihr Ansatz mit Squeeze, danke für diesen Ratschlag :) –

Antwort

0

reshape ist keine kostspielige Operation in MATLAB, da es nur ändert, wie Daten adressiert werden und die zugrunde liegenden Daten nicht berühren oder kopieren.

Das gesagt, Sie brauchen nur wirklich einen Anruf an reshape.

means = squeeze(nanmean(reshape(M, 4, 6, []), 1)) 
+0

Danke Suever :) –