WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mittelwert aus ausgewählten Elementen einer Matrix

 

webbi
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 01.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2009, 13:07     Titel: Mittelwert aus ausgewählten Elementen einer Matrix
  Antworten mit Zitat      
Hallo zusammen!

Ich habe aus einer relativ großen Matrix (165420x60), welche quasi die Aneinandereihung von 2757 60x60 Matrizen darstellt, mittels regiongrowing das für mich relevante Objekt in jeder der 2757 Einzelmatrizen detektiert.
Diese für mich relevanten Daten sind nun wieder in einer Matrix mit 165420x60 abgespeichert.
Unterschied zur Ausgangsmatrix ist nun, dass alle nicht relevanten Werte auf 0 gesetzt sind. Kann man sich quasi als eine ca. 20x20Pixel große "Insel" in lauter 0-Werten pro 60x60 Matrix vorstellen.
Nun möchte ich die Mittelwerte für die einzelnen "Inseln" erhalten und in einen Vektor speichern.

Es müsste eigentlcih mit einer if-Anweisung gehen... aber irgendwo ist der Wurm drin... matlab kann mit meiner jetzigen Anweisung nichts anfangen.

Code:

% Das ist mein Ansatz

%% Auswertung der detektierten Daten

x=60
y=60
Anzahl=2757

for i=1:Anzahl
   
    Etemp = E((i*x)-(x-1):i*x,1:y); %Der Teil funktioniert!
   
    if Etemp(:)~=0
       
        EMittel(i) = mean(Etemp(:));
       
    end
end    

% E ist die Matrix mit 165420x60
% Etemp stellt die jeweilige 60x60 Matrix dar

 


Ist bestimmt nicht schwer... aber mir fehlt die Erfahrung mit if-Anweisungen. Evt. gehts auch mit ner while-Schleife...

Bin für jede hilfe dankbar.
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2009, 16:26     Titel:
  Antworten mit Zitat      
Hallo webbi,

ich muss zugeben, ich bin mir nicht sicher, ob ich dein Problem bzw. deine Frage richtig verstanden habe.

Zu Testzwecken hab ich mir eine 120x60 Matrix erstellt und deinen Code darauf angewandt, welcher auch problemlos funktionierte. Dein Code ermittelt momentan einwandfrei die 60x60 Matrizen und ermittelt deren Mittelwert.

Meines Erachtens könntest du

Code:

if Etemp(:)~=0
end
 


auch weglassen, da dieser erst greift, wenn alle Elemente deiner 60x60 Matrix den Wert 0 haben.

Oder möchtest du vorher alle Werte 0 eleminieren und nicht mit in die Mittelwertberechnung einfließen lassen?

Falls ja, könntest du

Code:


x=60
y=60
Anzahl=2757

for i=1:Anzahl
   
    Etemp = E((i*x)-(x-1):i*x,1:y);
    Etemp_ohneNullen=nonzeros(Etemp) % übernimmt alle Werte ungleich 0 in die temporäre Matrix Etemp_ohneNullen
       
    EMittel(i) = mean(Etemp_ohneNullen(:));
       
end    
 


ausprobieren.

ciao
 
webbi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 01.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2009, 17:05     Titel:
  Antworten mit Zitat      
Super ... die Funktion
Code:
erfüllt genau den Zweck! Very Happy

Vielen Dank!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.