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

Herausfiltern von Werten einer 3d-Matrix mit einer 2d Matrix

 

vatbub

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2014, 20:37     Titel: Herausfiltern von Werten einer 3d-Matrix mit einer 2d Matrix
  Antworten mit Zitat      
Servus,
ich bin ein Matlab Neuling und muss es der Uni wegen lernen.
Wir haben jetzt sinngemäß die folgende Aufgabe bekommen:
In der dreidimensionalen Matrix ice_grids sind die weltweiten Eisdichten gegeben (Spalten und Zeilen der Matrix) über die Jahre 1996 bis 2006 ("Schichten" der Matrix). Nun soll aber nur mit den Werten in Grönland weiter gerechnet werden.
Dafür ist eine 2-dimensionale Matrix greenland_mask gegeben, bei der alle Elemente 0 sind, die nicht auf Grönland liegen und alle Elemente 1 sind, die auf Grönland liegen.

Jetzt möchte ich also die Werte von ice_grids, an deren Stelle greenland_mask=1 ist. Logischer Weise würde ich dann schreiben

Code:
test=ice_grids(greenland_mask)


Dann meckert Matlab: Subscript indices must either be real positive integers or logicals.

Also meine Idee: greenland_mask ist ja 2d, ice_grids hingegen 3d
Daher habe ich das ausprobiert:

Code:
test=ice_grids(greenland_mask , : )


Aber es kommt der selbe Fehler.

Jetzt habe ich greenland_mask zu einer 3d Matrix gemacht mithilfe dieser for-Schleife:

Code:
%grönlandmaske dreidimensional machen
gg=size(greenland_mask);
greenland_mask3d=zeros(gg(1),gg(2),12);
for k=1:12
    greenland_mask3d(:,:,k)=greenland_mask;
end


Danach wieder:

Code:
test=ice_grids(greenland_mask3d)


Und immer noch der selbe Fehler.

Ich denke, dass 1 und 0 doch in Matlab den boolschen Werten true und false entsprechen?

P.S.: Was ist eigentlich der Fachbegriff für diese "Schichten" in einer 3-dimensionalen Matrix?


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 15.12.2014, 22:24     Titel:
  Antworten mit Zitat      
hallo
eine logische matrix würdest du zb mit
Code:
find(greenland_mask)
erschaffen. anstatt deiner schleife kannst du auch einfach
Code:
benutzen. du kannst dann mit logischer indizierung arbeiten oder aber auch einfach mit elementweiser multiplikation
Code:
ice_grids.*repmat(greenland_mask,1,1,size(ice_grids,3))

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
vatbub

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2014, 22:47     Titel:
  Antworten mit Zitat      
Danke für deine Hilfe.

Nur eine Frage: Inwiefern unterscheidet sich das Ergebnis von find(...) und greenland_mask? Schließlich bestehen ja beide nur aus Nullen und Einsen?
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 16.12.2014, 02:02     Titel:
  Antworten mit Zitat      
Willkommen vatbub,

Der unterschied dürfte der Datentyp sein. greenland_mask ist vermutlich vom Typ double.

Bspw. mittels
Code:
find(greenland_mask)
erhält man eine Matrix des Typs logical.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
vatbub

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2014, 02:18     Titel:
  Antworten mit Zitat      
Ah, ok, ich habe meinen Dozenten so verstanden das der double-Wert 1 dem boolschen Wert true und der double-Wert 0 dem boolschen Wert false entspricht. Das bringt Klarheit in die ganze Sache.
Das Programm läuft jetzt übrigens super, also danke nochmals für die Hilfe.
 
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.