Verfasst am: 04.07.2012, 14:39
Titel: Mittelwert aus Cell-Array auslesen
Hallo,
ich möchte den Mittelwert aus 3D-Matrizen berechnen:
Code:
% Hier wird eine 3x3 Anfangsmatrix erzeugt
X1 = [123; 456; 789];
X1 = repmat(X1,[113]);
X1 = uint8(X1);
% Hier wird ein 3x2-Cell-Array erstellt, das in jeder Zelle eine 3D-Matrix hat for i = 1:3
M{i,1}(1:3,1:3,1:3) = X1(1:3,1:3,1:3)*i;
M{i,2}(1:3,1:3,1:3) = X1(1:3,1:3,1:3)*i*0,5;
end
% Hier möchte ich über die Zeilen des Arrays hinweg, aber für die Spalten separat einen Mittelwert errechnen. Es sollten sich zwei 3x3-Mittelwert-Matrizen ergeben.
gib mal M{:,1} ein und schau, was da kommt. Eine ganze Liste von Matrizen; du kannst aber immer nur eine in MEAN reinstecken.
Leider habe ich keine Ahnung, was du mit deinem Cell Array voller 3D-Matrizen anstellen willst; insofern ist es auch schwer, einen Rat zu geben. Ich kann mir aber vorstellen, dass CELLFUN hier hilft.
gib mal M{:,1} ein und schau, was da kommt. Eine ganze Liste von Matrizen; du kannst aber immer nur eine in MEAN reinstecken.
Leider habe ich keine Ahnung, was du mit deinem Cell Array voller 3D-Matrizen anstellen willst; insofern ist es auch schwer, einen Rat zu geben. Ich kann mir aber vorstellen, dass CELLFUN hier hilft.
Grüße,
Harald
Die 3D-Matrizen sind RGB-Bilder. Ich habe das Beispiel hier vereinfacht dargestellt, da das sonst zu weit führen würde.
Die Idee ist also, dass ich N x M Bilder habe und eine Art "Durchschnittsbild" für alle M einzeln machen will, gemittelt über alle N.
Bei M{:,1} gibt es die gleiche Fehlermeldung. Aber ich habe den Code ja mitgeschickt, kann man also eigentlich ganz gut daran testen, oder stimmt da was nicht?
dass dein Code Fehler produziert, war klar und so auch nachvollziehbar. Mir war jedoch nicht klar, was du mit dem Code erreichen wolltest.
Vorschlag:
Code:
% Hier wird eine 3x3 Anfangsmatrix erzeugt
X1 = [123; 456; 789];
X1 = repmat(X1,[113]);
X1 = uint8(X1);
% Hier wird ein 5D-Array erstellt % M(:,:,:, i, j) entspricht einem Bild
M = zeros(3,3,3,3,2);
for i = 1:3
M(:,:,:,i,1) = X1(1:3,1:3,1:3)*i;
M(:,:,:,i,2) = X1(1:3,1:3,1:3)*i*0.5;
end
% Hier möchte ich über die Zeilen des Arrays hinweg, aber für die Spalten separat einen Mittelwert errechnen. Es sollten sich zwei 3x3-Mittelwert-Matrizen ergeben.
Das funktioniert sehr gut, vielen Dank! Es ist natürlich etwas unübersichtlich mit so vielen Dimensionen, aber es geht
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.