Wie wird über ein Array von Arrays gemittelt?

8

Ich habe ein Zellenfeld c von Arrays gleicher Größe, d. h. size(c{n}) = [ m l ... ] für jedes n . Wie kann ich die mean -Werte (Mittelwertbildung über den Zellenarray-Index n ) für alle Array-Elemente in einem Sweep erhalten? Ich dachte über die Verwendung von cell2mat und mean , aber die erstere fügt keine weitere Dimension hinzu, sondern ändert l in l*n . Und das manuelle Looping dauert natürlich ewig ...

    
Tobias Kienzler 04.03.2011, 18:13
quelle

6 Antworten

15

Wenn alle Arrays dieselbe Größe haben, ist es sinnvoller, sie in einer Matrix statt in einem Zellenarray zu speichern. Das macht es einfacher, Operationen über sie hinweg durchzuführen, wie zum Beispiel das Mittel. Sie können Ihre Daten mithilfe der Funktionen NDIMS und CAT :

%Vor%     
gnovice 04.03.2011, 18:22
quelle
5

Wenn Sie eine höhere Version von Matlab haben, können Sie dies mit der Funktion "cellfun" erledigen. Dies kann die Zellen mit Arrays ungleicher Größe behandeln.

%Vor%

Referenz: Ссылка

    
Victor Bai 10.09.2012 19:38
quelle
2

Sie sind auf dem richtigen Weg. Verwenden Sie CELL2MAT , um Ihr Zellen-Array in ein numerisches Array zu konvertieren und dann RESHAPE um eine dreidimensionale Matrix zu konstruieren. Sie können dann den Mittelwert mithilfe der Funktion MEAN mit dem Dimensionsargument berechnen:

%Vor%     
b3. 04.03.2011 18:22
quelle
1

Dies führt nur zu einer Schleife durch die Zelle und bedeutet, dass das Array nach unten zeigt, bis es ein Singleton ist. Es dauert nicht lange, das sind 40 Millionen Floats, die man braucht, braucht 1 Sekunde.

%Vor%     
Miebster 04.03.2011 18:36
quelle
1

Ich habe einen einfachen Weg gefunden, die Mittelwerte innerhalb eines Zellen-Arrays unter folgendem Link zu finden: Ссылка

Mai x sei die Zelle. Dann:

%Vor%     
Fried Rice 06.11.2013 09:22
quelle
0

danke für Ihre anderen Kommentare, aber manchmal ist es schwer, die Daten neu anzuordnen oder die Art zu ändern, wie sie gespeichert werden. Für diejenigen von Ihnen, die dieses Problem haben, hier ist die Lösung, Genießen.

%Vor%     
user3330794 20.02.2014 02:29
quelle

Tags und Links