|
Vertigo |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 24.12.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.12.2016, 02:08
Titel: NaN in Meshgrid setzen
|
 |
Hi!
Ich möchte aus einer 2D-Matrix eine 2D meshgrid-Matrix erstellen. In der Matrix sind unterschiedliche Werte und NaNs gespeichert. Die NaNs aus der 2D-Matrix sollen in die X- und Y-meshgrid-Matrix übernommen werden und die zugehörigen Stellen ersetzen.
Als Beispiel:
a = [1 NaN 3; 4 5 6; 7 8 NaN]
soll
X = [1 NaN 3; 1 2 3; 1 2 NaN]
Y = [1 NaN 1; 2 2 2; 3 3 NaN]
werden.
Nun habe ich mir gedacht man könnte es so lösen:
[X,Y] = meshgrid(1:length(matrix),1:length(matrix)) wäre jetzt die meshgrid Matrizen von matrix zu erstellen.
und ich dachte die NaNs könnte man so übernehmen:
[X(isnan(matrix))= NaN,Y(isnan(matrix))= NaN] = meshgrid(1:length(matrix),1:length(matrix))
funktioniert natürlich nicht. Wo ist da mein Denkfehler? Ich bin leider absoluter Beginner.
Viele Grüße und angenehme Feiertage.
Vertigo
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.12.2016, 21:16
Titel: Re: NaN in Meshgrid setzen
|
 |
Hallo Vertigo,
Meinst Du:
length
ist hier ja nicht im Allgmeinen Fall richtig und "matrix" ist wohl "a"?
Dann:
Das klappt aber nur bei quadratischem "a", wenn X, Y und a die gleiche Größe haben.
Gruß, Jan
|
|
|
Vertigo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 24.12.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.12.2016, 18:07
Titel:
|
 |
Vielen dank für die Antwort. Ja. a = matrix. Das war jetzt etwas verwirrend von mir dargestellt.
Ja, so ist es natürlich richtig.
Leider ist matrix fast nie quadratisch.
funktioniert leider nicht, so dachte ich ja auch erst.
Die meshgrid X und X werden jetzt korrekt aufgestellt, allerdings ohne die NaNs.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 28.12.2016, 14:07
Titel:
|
 |
Hallo Vertigo,
Wenn die Matrix nicht quadratisch ist, wie soll denn das Ergebnis aussehen? Ist das bereits klar definiert worden? Falls nicht, lässt es sich noch nicht in Matlab implementieren ;-)
Gruß, Jan
|
|
|
Vertigo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 24.12.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.12.2016, 00:08
Titel:
|
 |
Es ist so einfach. Nach diesem Prinzip kann es funktionieren:
ergibt:
In meinem Fall brauche ich nur den Y-meshgrid
Grüße
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 01.01.2017, 03:38
Titel:
|
 |
Hallo Vertigo,
Das ist aber doch genau die gleiche Lösung, wie ich sie vorschlug, nur komplizierter ausgedrückt:
Und genau das klappt nur, wenn Y und matrix die gleiche Größe haben, also matrix quadratisch ist.
Gruß, Jan
|
|
|
Vertigo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 24.12.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.01.2017, 22:12
Titel:
|
 |
Ja, Y und Matrix müssen die gleiche Größe haben, sonst wäre die Übung ja komplett sinnfrei. Ich dachte du meinst, ob "matrix" immer quadratisch sein muss. Und matrix soll irgendeine Größe quadratisch und nicht quadratisch haben können.
kann so eben nicht funktionieren, deswegen der code wie oben von mir geschrieben. Oder habe ich dich jetzt komplett missverstanden?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.01.2017, 20:49
Titel:
|
 |
Hallo Vertigo,
und
ist vollkommen equivalent. Da "matrix" ein 2D-Array ist, ist die dritte Dimension "1" hier überflüssig und wird ignoriert. "matrix(1:r, 1:c)" ist dann das gleiche wie "matrix". Wenn also die obere Methode nicht funktioniert, kann die untere auch nicht laufen. Und andersherum: Wenn Deine Lösung funktioniert, ist auch "Y(isnan(matrix)) = NaN" korrekt.
Gruß, Jan
|
|
|
Vertigo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 24.12.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.01.2017, 20:55
Titel:
|
 |
Ah, ok, ich verstehe. Du hast natürlich vollkommen recht. Ich hatte vorher auch eine mehrdimensionale Matrix verwendet (:, : , 3). Das habe ich dummerweise unterschlagen hier zu posten. Deswegen hatte es auch nie funktioniert. Mein Fehler. Vielen Dank für die Hilfe. Es werden bestimmt bald weitere Fragen folgen.
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|