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

Logical Indexing mit mehrere 'logical'-Matritzen

 

madlab
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 86
Anmeldedatum: 15.05.12
Wohnort: Freiburg
Version: 7.11 (R2010b)
     Beitrag Verfasst am: 19.02.2013, 14:27     Titel: Logical Indexing mit mehrere 'logical'-Matritzen
  Antworten mit Zitat      
Hallo Leute,

ich sitze gerade an einem vermutlich recht trivialen Problemchen. Ich möchte einen Datensatz mittels logical indexing über viele diverse Masken untersuchen. Ein Beispiel wäre:

Code:

maskedData = data(mask1);
 


dann erhalte ich einen Vektor mit allen Werten die die Bedingung aus mask1 erfüllen. Soweit so gut! Mein Problem ist nun, dass ich sehr viele Masken habe (mask1 bis maskn) und diese in einer Schleife nutzen möchte. Ich dachte zuerst sie alle in einer 'cell' abzulegen:

Code:

myMasks = {mask1 mask2 mask3 mask4 ... maskn}
 


Wie komme ich jetzt aber wieder an meine Werte?
Für myMasks(1) erhalte ich z.B. ans = [200x500 logical]
aber nicht mehr die Werte die dahinter stecken.
Ist der Ansatz mit cell evtl falsch um meine Aufgabe zu lösen oder wie komme ich jetzt wieder an die echten Werte (also die Matritze) von mask1 dran?
Wäre dankbar für alle Hinweise evtl. auch zu Umsetzungen mit geiegneteren Datentypen.

Viele Grüße,

Mad
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.02.2013, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

wenn die Anzahl festgelegt ist:
Code:
mask = mask1 & mask2 & ... & maskn


Wenn die Anzahl nicht festgelegt ist und die Masken in einem Cell Array masks abgelegt sind:

Code:
mask = masks{1};
for I = 2:numel(masks)
mask = mask & masks{I};
end


Die neue Maske kannst du dann genauso verwenden wie mask1. Natürlich ist für das ganze die Voraussetzung, dass alle Masken die gleichen Dimensionen haben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
madlab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 86
Anmeldedatum: 15.05.12
Wohnort: Freiburg
Version: 7.11 (R2010b)
     Beitrag Verfasst am: 19.02.2013, 15:01     Titel:
  Antworten mit Zitat      
Hi Harald,

ich glaube ich habe mich etwas missverständlich ausgedrückt. Embarassed Totzdem hast du es geschafft mir mit deinem Kommentar die Antwort zu liefern Very Happy

Meine Absicht war es nicht, die Masken elementweise zu verknüpfen, sondern lediglich auf ihre Inhalte über die Cell zugreifen.
Das geht, wie von dir beschrieben mit dem Zugriff über die gescheiften Klammern.
z.B.:
masks{1} bis mask{n}
Ich habe es dooferweise nur mit masks(1) bis masks(n) versucht. Die runden Klammern ergeben dann eben immernur den Datentyp als Rückgabe (z.B. <200x500 logical>). Ich wollte aber die Echten Werte (also die Logic-Matrix mit 0 und 1) die dahinterstecken. Wieso das so ist mit geschweifter und runder Klammer, weis ich zwar noch nicht aber es funktioniert Smile

Der Tip mit dem verknüpfen von Masken, wird mir aber in Zukunft auch noch nützlich sein, da ich irgendwann die Masken kombinieren will Wink
Besten Dank für deine schnelle Hilfe!

Grüße,

Mad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.02.2013, 15:23     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wieso das so ist mit geschweifter und runder Klammer, weis ich zwar noch nicht aber es funktioniert


Bei Cell Arrays bekommst du mit runden Klammern die Cell an sich, mit geschweiften Klammern den Inhalt der Cell. Es ist empfehlenswert, immer auch auf die im Workspace angezeigten Datentypen zu achten.

Grüße,
Harald
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 - 2025 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.