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

Meshgrid aus 3 Vektoren

 

Schmankerl
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2013, 14:13     Titel: Meshgrid aus 3 Vektoren
  Antworten mit Zitat      
Hi,

ich habe die folgenden Vektoren (siehe Excel Liste).

Jede Zeile bildet jeweils eine Wertekombination, so wird aus pt9(1) tt9(1) indirekt ex_Wirk_ges(1) berechnet, das gleiche für pt9(2) tt9(2) und ex_Wirk_ges(2) ...

Nun möchte ich, dass pt9 und tt9 ein Rechteck bilden (aus Wertekombinationen) und darüber dann zu jedem Wertepaar(punkt) ex_Wirk_ges aufgetragen wird.

Dies soll anschließend (falls man dazu nicht unbedingt eine Funktion benötigt) durch eine Surface Oberfläche dargestellt werden.

mit dem Befehl plot3 erhalte ich leider nur sehr merkwürdig verbundene Linien.

Das Problem ist,dass ich den Befehl meshgrid nicht anwenden kann, da ich einerseits meine Kombinationen schon fest vorgegeben habe (in 2 Vektoren) und ich diese dann doppelt und dreifach im mesh hätte, andererseits eben ex_Wirk_ges nur indirekt mit den Variablen pt9 und tt9 verknüpft ist.

Ich möchte quasi einfach, dass jede Wertekombination (jede Zeile) von pt9 und tt9 einen Punkt darstellen, über dem dann der Wert von ex_Wirk_ges ausgetragen wird.

Geht das irgendwie schön zu plotten?

Excel Datei im Anhang

Dankeschön

Exergieberechnung.xls
 Beschreibung:

Download
 Dateiname:  Exergieberechnung.xls
 Dateigröße:  128 KB
 Heruntergeladen:  341 mal
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: 23.01.2013, 04:45     Titel:
  Antworten mit Zitat      
Hallo,

hast du mal
Code:
oder scatter3 versucht?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2013, 08:30     Titel:
  Antworten mit Zitat      
Falls du unbedingt eine Oberfläche ploten willst kannst du auch griddata (oder gridfit) zum erstellen von regelmäßig verteilten Daten und mesh oder surf zum ploten verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Schmankerl
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2013, 12:39     Titel:
  Antworten mit Zitat      
Ja mit plot3 habe ich es schon probiert, hat mir aber nicht sonderlich gefallen. Das mit dem Interpolieren hört sich gut an, nur verstehe ich den Syntax nicht.

Ich habe in meinem Code die Vektoren pt9 , tt9 und ex_Wirk_ges . Wie baue ich die in "griddata" ein?
http://www.mathworks.de/de/help/matlab/ref/griddata.html
versteh ich nicht so recht.
Dort werden folgende 3 Schritte aufgezeigt:

1)

Code:
xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1); y = xy(:,2);
v = x.*exp(-x.^2-y.^2);


2)

Code:
[xq,yq] = meshgrid(-2:.2:2, -2:.2:2);
vq = griddata(x,y,v,xq,yq);


3)

Code:
figure
mesh(xq,yq,vq);
hold on
plot3(x,y,v,'o');
h = gca;
set(h,'XLim',[-2.7 2.7]);
set(h,'YLim',[-2.7 2.7]);



Was wäre das denn bei mir mit pt9 tt9 und dem Vektor ex_Wirk_ges?
Checke da nicht ganz durch wie ich das abändern muss?

Hätte bitte jemand nochmal einen Hinweis?
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: 23.01.2013, 14:21     Titel:
  Antworten mit Zitat      
Hallo,

statt griddata kann man auch TriScatteredInterp verwenden. Das Beispiel in der Doku zu diesem Befehl finde ich verständlicher. Dort musst du nur x,y,z durch deine Datenvektoren ersetzen.
http://www.mathworks.com/help/relea.....f/triscatteredinterp.html

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2013, 15:56     Titel:
  Antworten mit Zitat      
Schade, da erhalte ich auch wieder nur die Punktdarstellung (siehe Anhang).

Was ich allerdings nun erreicht habe, dass ich ein meshgrid habe:

[X,Y]=meshgrid(p,t)

Also 2 große Matrizen X und Y.

Aus denen habe ich dann über weitere Berechnungen meine Matrix "Endergebnis" erhalten, mit der gleichen Dimension wie X bzw. Y.

X und Y spannen nun ja ein Rechteck auf mit vielen Punkten bzw. Kombinationen aus p und T.

Zu jeder Kombination habe ich an der passenden Stelle in der Matrix nun einen Wert, der unter "Endergebnis" liegt.

Ist es nun möglich dass sinnvoll als interpolierte Fläche irgendwie darzustellen?

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  45.63 KB
 Heruntergeladen:  522 mal
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: 23.01.2013, 17:10     Titel:
  Antworten mit Zitat      
Hallo,

welche Befehle verwendest du denn, um die Grafik zu erzeugen?
In der Doku ist ein sehr klares Beispiel, wie man mit TriScatteredInterp Oberflächen erzeugen kann (man kann ja mesh durch surf ersetzen).

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2013, 18:33     Titel:
  Antworten mit Zitat      
Ich habe mich genau daran gehalten:

Code:
F = TriScatteredInterp(A(:,1),A(:,2),ex_Wirk_ges);



ti = 0:1:1700;
[qx,qy] = meshgrid(ti,ti);
qz = F(qx,qy);
mesh(qx,qy,qz);

plot3(A(:,1),A(:,2),ex_Wirk_ges,'o');


Wobei A(:,1),A(:,2),ex_Wirk_ges meine 3 gleich großen Vektoren sind Harald.

Hmm?
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: 23.01.2013, 22:03     Titel:
  Antworten mit Zitat      
Hallo,

in der Doku steht zwischen mesh und plot3 ein
Code:


Das ist nötig, damit die erste Graphik von der zweiten nicht überschrieben wird.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2013, 00:54     Titel:
  Antworten mit Zitat      
Das ändert aber leider auch nichts. Aber irgendwie muss das doch bestimmt in matlab möglich sein Rolling Eyes

Wie würde das ganze denn mit griddata funktionieren

http://www.mathworks.de/de/help/matlab/ref/griddata.html

Ich weiß nicht ganz was hier xq yq vq etc. bedeuten sollen.

Wie gesagt, ich habe nur meine 3 Vektoren aber wie ich die da einbaue?
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: 24.01.2013, 04:42     Titel:
  Antworten mit Zitat      
Hallo,

das Problem lag weniger an der Interpolationsmethode sondern an unsinnigen t-Werten. Wenn dein pt9 bei 1.8e5 beginnt, dann macht es nunmal keinen Sinn, zwischen 0 und 1700 zu interpolieren.

Hier der komplette Code:

Code:
data = xlsread('deineDatei.xls');
A = data(:,1:2);
ex_Wirk_ges = data(:,4);

F = TriScatteredInterp(A(:,1),A(:,2),ex_Wirk_ges);
t1 = linspace(min(A(:,1)), max(A(:,1)));
t2 = linspace(min(A(:,2)), max(A(:,2)));
[qx,qy] = meshgrid(t1,t2);
qz = F(qx,qy);
mesh(qx,qy,qz);
hold on
plot3(A(:,1),A(:,2),ex_Wirk_ges,'o');


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2013, 18:24     Titel:
  Antworten mit Zitat      
Aaah ok.Jetzt klappts!

Sieht zwar trotzdem nicht so dolle aus, liegt aber wohl an meinen Punkten Sad
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: 24.01.2013, 19:12     Titel:
  Antworten mit Zitat      
Hallo,

oft hilft es, die Grafik ein wenig zu rotieren.
Ansonsten müsstest du präzisieren, wie es besser aussehen sollte.

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.