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

Plotten von bestimmten Daten aus Matrix

 

Spaceball
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2017, 17:25     Titel: Plotten von bestimmten Daten aus Matrix
  Antworten mit Zitat      
Guten Tag,

ich bin gerade dabei ein Wärmeleitungsmodell im Festkörper zu schreiben.
Das Modell steht und funktioniert super, ich bräuchte aber Hilfe beim Plotten.
Die Matrix habe ich mittels meshgrid erstellt:

[x,z,t]=meshgrid(-2:0.1:2,0:1e-9:2e-6,0:0.5*10^(-9):100*10^(-9));

Die Plots:

h=surf(z,t,Tges); %bei x=0

und

h=surf(x,t,Tges); %bei z=0

funktionieren super, nun würde ich aber gern den Temperaturverlauf in x-Richtung (als x-Achse) und z-Richtung (als y-Achse) bei einer bestimmten Zeit (und nicht das gesamte Zeitintervall) so plotten,
sodass ich z.B. mit colourmap hot und nebenstehender colourbar den Temperaturverlauf (ausgehend von Punktquelle bei x=z=0) bei einer bestimmten Zeit darstellen kann....quasi ein Profilschnitt zum Zeitpunkt t.

Ich habe leider von Indizierung (ich denke so macht man das) keinen Plan, habe mich versucht in das Thema rein zu lesen und verstehe es einfach nicht.

Prinzip wäre demnach: Suche in Matrix die Zeit t und plotte den Temperaturverlauf in x-Richtung sowie in die Tiefe mit Wärmemap und Colourbar.

Hätte da jemand eine Idee?

Vielen Dank im Voraus,

Spaceball
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.07.2017, 22:06     Titel: Re: Plotten von bestimmten Daten aus Matrix
  Antworten mit Zitat      
Hallo Spaceball,

Ich vermute, Deine Frage ist so noch nicht beantwortbar.

Zitat:
nun würde ich aber gern den Temperaturverlauf in x-Richtung (als x-Achse) und z-Richtung (als y-Achse) bei einer bestimmten Zeit (und nicht das gesamte Zeitintervall) so plotten,
sodass ich z.B. mit colourmap hot und nebenstehender colourbar den Temperaturverlauf (ausgehend von Punktquelle bei x=z=0) bei einer bestimmten Zeit darstellen kann....quasi ein Profilschnitt zum Zeitpunkt t.

Den Inhalt dieses Satzes verstehe ich nicht. "z-Richtung (als y-Achse)" klingt seltsam. Wie man aber einen Profilschnitt bei t durchführt, weiß ich nicht, da ich noch nicht verstehe, in welcher Form die Daten vorliegen.

Zitat:
Prinzip wäre demnach: Suche in Matrix die Zeit t und plotte den Temperaturverlauf in x-Richtung sowie in die Tiefe mit Wärmemap und Colourbar.

Man kann nicht wissen, wie Du in Deiner Matrix nach der Zeit t suchen kannst.
Versuche das noch mal in einzelne Teile zu splitten und die dann Schritt für Schritt zu erklären.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Spaceball
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2017, 23:03     Titel:
  Antworten mit Zitat      
Hallo Jahn,

ich versuche das Ganze etwas genauer zu beschreiben.
Mein Wärmeleitungsmodell besteht darin, dass ich jedem Wert in lateraler Richtung (x-Richtung bzw. y-Richtung, da aber Punktquelle ist das Ganze rotationssymmetrisch) und in die Tiefe (z-Richtung) eine bestimmte Temperatur zuordne, die zeitabhängig ist.

Die plots (surf) in die Tiefe bei x=0 (also kein x-Intervall) bzw. lateral bei z=0 funktionieren super. Ich hätte aber gern eine Heatmap die mir die laterale als auch die Tiefe bei einer ganz bestimmten Zeit plottet.

Mit meshgrid habe ich also eine Matrix erstellt, die jedem x- und z-Wert bei einer bestimmten Zeit (meist exp-fkt oder Wurzel-fkt) eine Temperatur zuordnet.

Versucht habe ich z.B.:

index=find(:,:,13e-9); % alle x, alle y, bei 13e-9s

aber da muckert matlab schon rum.... wie gesagt, ich versteh die Indizierung nicht.

Stell Dir vor, Du hast ein Stück Eisen und koppelst kurz eine Wärmequelle ein bei einer bestimmten Zeit sägst Du quasi das Stück durch und schaust Dir die Temperaturentwicklung im Querschnitt an....genau das möchte ich.

Im Anhang sieht man die Abbildungen einzeln, also einmal die laterale Richtung bei z=0 über den gesamten Zeitbereich und einmal bei x=0 dafür in die Tiefe über den gesamten Zeitbereich... Ich hätte nur gern eine bestimmte Zeit, dafür in x-Richtung die laterale Temperaturverteilung und in y-Richtung die Tiefe in den Festkörper hinein.

depth.jpg
 Beschreibung:

Download
 Dateiname:  depth.jpg
 Dateigröße:  44.8 KB
 Heruntergeladen:  305 mal
x-direction.jpg
 Beschreibung:

Download
 Dateiname:  x-direction.jpg
 Dateigröße:  87.79 KB
 Heruntergeladen:  303 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.07.2017, 17:45     Titel:
  Antworten mit Zitat      
Hallo Spaceball,
Zitat:
Code:
index=find(:,:,13e-9);  % alle x, alle y, bei 13e-9s

Dies ist die Unter-Matrix des Feldes "find", wobei der 3. Index "13e-9" nicht ganzzahlig ist, so dass dies kein valider Index ist. "find" ist üblicherweise auch ein Befehl, und kein Array. Trotzdem ist das schon mal ein guter Anfang. Was bedeutet nun genau "bei 13e-9"? Was soll diesen Wert annehmen? Und kannst Du erwarten, dass der Wert exakt gefunden wird? Floating-Point-Zahlen werden ja nur mit begrenzter Genauigkeit gespeichert.

Zitat:
aber da muckert matlab schon rum.... wie gesagt, ich versteh die Indizierung nicht.

Statt "muckert rum" poste bitte immer die komplette Fehlermeldung, damit die Leser nicht herumraten müssen.
Du kannst nicht ordentlich mit Matlab arbeiten, wenn Du die Indizierung von Arrays nicht verstehst. Ich empfehle das Lesen der "Getting Started" Chapter und Matlab's Onramp.

Zitat:
Stell Dir vor, Du hast ein Stück Eisen und koppelst kurz eine Wärmequelle ein bei einer bestimmten Zeit sägst Du quasi das Stück durch und schaust Dir die Temperaturentwicklung im Querschnitt an....genau das möchte ich.

Nein, es ist nicht sinnvoll sich das vorzustellen, denn für Matlab handelt es sich um ein Array aus Zahlen. Weder "Esien" noch "Wärmequelle" sind hier hilfreich. Es ist notwednig sich das abstrakter vorzustellen, damit man es in Matlab implementieren kann, denn da gibt es keine "Säge".

Erkläre also noch genauer, aber abstrakter. Du hast ein 3D-Array und möchtest darin bestimmte Indices in der 3. Dimension finden? Richtig?

Wie hängen die geposteten Bilder mit Deiner Frage zusammen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Spaceball
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2017, 22:15     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich möchte mich schon einmal im voraus für Deine Hilfe und Dein Verständnis bedanken.

Anhand:

[x,z,t]=meshgrid(-2:0.1:2,0:1e-9:2e-6,0:0.5*10^(-9):100*10^(-9));

erstelle ich eine 2001x41x201 double Matrix, bei der die Zeit von 0 bis 100ns (100e-9s) in 500ps Schritten erstellt wird, der Wert den ich als Bsp von 13e-9 (13ns) gewählt habe existiert also.

Jeder Zeit t wird demnach eine Schar an z- und x- Werten zugeordnet und diesen werden mit meiner Wärmeleitungsfunktion Temperaturen zugeordnet.

Die Abbildungen zeigen zum Einen die Temperaturentwicklung von 0 bis 100ns an der Oberfläche, also Tiefe=0 (z=0), zum Anderen die Tiefe von 0 bis 100ns bei x=0.

Mein Wunsch, an dem ich mir den Kopf zerbreche, ist bei einer bestimmten Zeit im definierten Zeitintervall von 0 bis 100ns eine bestimmte Zeit auszuwählen (sagen wir 13ns) und als Plot (ähnlich der geposteten Abbildungen) die laterale Richtung (x- Richtung) als auch die Tiefe in einer Grafik darzustellen.

Klar könnte ich auch einfach beide Grafiken für die qualitative Auswertung nutzen und in einer Publikation Querverweise machen, aber ich möchte auch vorrangig meine Matlab-Kenntnisse (die noch recht jung sind) verbessern und Abbildungen auf das wesentliche reduzieren.


An dieser Indizierung beiße ich mir die Zähne aus.
Der Befehl:

index=find(:,:,13e-9); % alle x (aslo laterale Ausbreitung), alle y (also die Tiefe),
bei 13e-9s (13ns)

bring als Fehlermeldung:

Reference to a cleared variable find.

Was ich nicht verstehe, da ich genau weiß, dass diese Zeit in der Matrix existiert und ihr x und z Werte (und damit Temperaturen) zugeordnet sind.

Viele Grüße und vielen Dank,

Spaceball
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.