Frage

Ich versuche, einen Binning-Durchschnitt auszuführen. Ich bin mit dem Code:

Avg = mean(reshape(a,300,144,27));
AvgF = squeeze(Avg);

Die letzte Zeile wird von Singleton Dimensionen befreien.

kann, um zu sehen, ich mehr als 300 Punkte bin durchschnittlich. Es funktioniert gut, mit Ausnahme der Zeiten, in denen ich eine Gesamtzahl von Punkten nicht gleich einem Vielfachen von 144 * 300.

Gibt es eine Möglichkeit, diese Binning durchschnittliche Arbeit selbst zu machen, wenn die Gesamtzahl der Punkte ist nicht ein Vielfaches von 144 * 300?

EDIT: Sorry, wenn meine Frage klang verwirrend. Um zu klären ...

habe ich eine Datei mit 43200 Zeilen und 27 Spalten. Ich bin Mittelung durch Binning 300 Zeilen zu einem Zeitpunkt, das heißt am Ende I mit einer Matrix der Größe am linken 144-by-27 .

Mein Code wie ich schrieb es nur oben funktioniert, wenn ich genau 43200 Zeilen. In einigen Fällen habe ich 43199, 43194, etc .. Die reshape Funktion arbeitet, wenn ich eine Gesamtanzahl der Zeilen, die ein Vielfaches von 300 (die Behältergröße) ist. Gibt es eine Möglichkeit, diese Binning durchschnittliche Arbeit, wenn meine Gesamtanzahl der Zeilen, um nicht ein Vielfaches von 300 ist?

War es hilfreich?

Lösung

Ich denke, dass ich das Problem besser verstehen, jetzt ...

Wenn a die Daten aus der Datei gelesen (der Größe N-by-27 , wobei N ideal 43.200), dann denke ich Sie folgendes tun möchte:

nRemove = rem(size(a,1),300);  %# Find the number of points to remove
a = a(1:end-nRemove,:);        %# Trim points to make an even multiple of 300
Avg = mean(reshape(a,300,[],27));
AvgF = squeeze(Avg);

Dies wird Punkte entfernen, so dass die Anzahl der Zeilen in a ein Vielfaches von 300. Dann wird Ihr reshape sein und durchschnittlich funktionieren sollte. Beachten Sie, dass ich [] im Aufruf von RESHAPE verwenden , die es herausfinden, was die Anzahl der Spalte können sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top