|
|
Meshgrid "filtern" über Logical Matrix? |
|
Schmankerl |

Forum-Fortgeschrittener
|
 |
Beiträge: 77
|
 |
|
 |
Anmeldedatum: 05.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 22:50
Titel: Meshgrid "filtern" über Logical Matrix?
|
 |
|
 |
|
Hallo miteinander!
Folgendes Problem:
Ich habe ein Rechengebiet welches aus Druck-und dazugehörigen Temperaturwerten besteht.
Dieses (annähernd rechteckige) Rechengebiet möchte ich mir nun in Matlab erstellen.
Dazu habe ich zwei Vektoren, jeweils einen für die Temperatur und einen für den Druck erstellt mit einer entsprechenden Schrittweite.
Das Gebiet wird durch einen minimalen und maximalen Druck sowie eine minimale und maximale Temperatur begrenzt.
Über die Funktion "meshgrid" erstelle ich mir nun diese Kombinationsmöglichkeiten (Druck- und Temperaturpunkte)
Da zu einem bestimmten Druckwert z.B. p=20bar nur Temperaturen bis 900K zugelassen sind, möchte ich alle Kombinationen mit p=20bar und Temperatur
größer als 900K quasi löschen.
Meine Frage ist nun, wie ich die "meshgrid" Funktion "filtere" um nur ganz bestimmte Kombinationen zuzulassen?
Diese Kombinationsmöglichkeiten möchte ich anschließend in eine Formel bzw. Funktion f=f(p,T) packen und die Funktionswerte berechnen lassen.
Wie gesagt, ich darf aber nur bestimmte meshgrid Kombinationen verwenden.
Weiß jemand wie das geht? Vielen
Mein Betreuer meinte, ich möchte so etwas über eine "Logical Matrix" haben?
Also bisher bin ich mit meinem Code so weit:
Besten Dank für ein paar Hinweise
|
|
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.12.2012, 23:19
Titel:
|
 |
Für die von dir beispielhaft genannte Grenzen ist eine logic Matrix recht schnell erstellt:
Da wo die 1 ist, ist die grenze eingehalten.
Mit dem Filter kannst du jetzt das Grid filtern:
|
|
|
Schmankerl |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 77
|
 |
|
 |
Anmeldedatum: 05.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.12.2012, 12:46
Titel:
|
 |
Ok super das hilft mir schonmal weiter, Danke! Nun muss ich die Bedingung ein wenig abändern.
Die Bedingung ist, dass wenn ich einen bestimmten
Druck p_i habe,
keine Temperaturen auftreten dürfen, die kleiner sind als
T<T0* (p_i / p_0)^(R/cp)
Beispiel:
Angenommen mein Meshgrid erstellt mir die Kombinationen für
p=3
dann darf die minimale Temperaturkombination nicht unter den Wert
T=T0* (3 / p_0)^(R/cp) fallen
(T0,p0,R,cp sind Konstanten und im Programm definiert)
Wie könnte man das programmieren, habe es so versucht:
nur das ging irgendwie in die Hose
|
|
|
Schmankerl |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 77
|
 |
|
 |
Anmeldedatum: 05.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.12.2012, 11:06
Titel:
|
 |
Hat jemand vielleicht eine Idee wie ich das einbauen kann?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.12.2012, 11:48
Titel:
|
 |
Hallo Schmankerl,
Zitat: |
nur das ging irgendwie in die Hose |
Bitte lass uns nicht raten, während Dir ja genau Informationen darüber vorliegen, was genau nicht wie erwartet funktioniert.
Gruß, Jan
|
|
|
Schmankerl |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 77
|
 |
|
 |
Anmeldedatum: 05.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.12.2012, 13:29
Titel:
|
 |
|
 |
|
Wie gesagt wollte ich oben beschriebenes erreichen:
Zitat: |
Die Bedingung ist, dass wenn ich einen bestimmten
Druck p_i habe,
keine Temperaturen auftreten dürfen, die kleiner sind als
T<T0* (p_i / p_0)^(R/cp)
Beispiel:
Angenommen mein Meshgrid erstellt mir die Kombinationen für
p=3
dann darf die minimale Temperaturkombination nicht unter den Wert
T=T0* (3 / p_0)^(R/cp) fallen
(T0,p0,R,cp sind Konstanten und im Programm definiert) |
Genau das habe ich mit
versucht:
Die "Logical Matrix" soll nun folgendes machen:
Sie soll alle Drücke p durchlaufen die in X gespeichert sind und gleichzeitig zu jedem Druck p prüfen, ob die Temperatur die unter Y gespeichert ist größer als T0*(p/p0)^(R/cp) wobei hier der Druck p von X eingesetz wird.
Quasi am Beispiel:
X hat die Druckwerte (2,3,4,5,6...) und dazu jeweils die passende Temperatur also quasi
zum Druck 2 die Temperaturen (290,291,292,293...)
zum Druck 3 die Temperaturen (290,291,292,293,...)
nun sollen aber zum Druck 2 alle Temperaturen in Y herausfallen die kleiner als T0*(2/p0)^(R/cp) sind
und genau beim Druck p=3 alle Temperaturen in Y herausfallen die kleiner sind als T0*(3/p0)^(R/cp)
Hoffe das ist verständlich?
Und das habe ich eben durch meinen Befehl
nicht hinbekommen
Weiß jemand wie das gehen könnte (ohne Schleifenprogrammierung)?
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.12.2012, 14:02
Titel:
|
 |
Was genau hat p jetzt für eine Bedeutung, wenn sowiso immer p=X?
|
|
|
Schmankerl |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 77
|
 |
|
 |
Anmeldedatum: 05.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.12.2012, 19:24
Titel:
|
 |
Ja du hast recht, es gilt eigentlich immer X==p.
Ich möchte damit zum Ausdruck bringen, dass wenn X eben gerade einen bestimmten Druckwert hat, der zugehörige Y Wert eben eine bestimmte Bedingung erfüllen muss.
Weiß niemand wie so etwas gehen könnte?
Im Prinzip ist es quasi ein 2D Rechengebiet, welches eben bestimmte Grenzen hat, quasi Wertekombinationen die nicht vorkommen dürfen.
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.12.2012, 22:52
Titel:
|
 |
L=(Y<T0*(X/p0).^(R/cp));
Dann ist das dein Filter.
das "." vor den üblichen Rechenzeichen führt die Operationen jeweils elementweise aus.
|
|
|
|
|
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.
|
|