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

Graph mit zwei Variablen

 

PHEV
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 10:54     Titel: Graph mit zwei Variablen
  Antworten mit Zitat      
Hallo ich möchte eine total simple Funktion mit Matlab berechnen und plotten.

Ich habe damit leider keine Erfahrungen und versuche seit einer Stunde verzweifelt alles, aber bekomme ausschließlich Fehler.

Auf wolframalpha bekomme ich meine Funktion wie gewünscht geplottet, allerdings eingeschränkt, insbesondere in der Darstellung.

Die Funktion ist:

f(x,y)=x*y>5000

function z(x,y)=x*y>10

h=0.02;
x= 0:h:3000;
y= 0:h:200


Dies führt jedoch zu gar nichts.

Ich habe auch mal angefangen ganz simpel in Matlab funktionen zu ploten.

Während

x = 0:0.5:2000;
y=sqrt(x)
plot(y)

wunderbar geht

klappt

y=x^2 nicht
y=x^(1/2) auch nicht usw.

ich habe leider keine Ahnung, kann mich aber auch nicht an tutorials durchhangeln, weil irgendwie zu viel nicht geht und ich nicht weis wieso.
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.02.2014, 11:10     Titel:
  Antworten mit Zitat      
Es liegt wohl an dem Punkt:

Code:


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 11:18     Titel:
  Antworten mit Zitat      
Hallo,

das habe ich mittlerweile auch rausgefunden, aber ich bekomme trotzdem kein ergebnis für mein Problem. Ich kann aber f(x)=x.^2 plotten Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.02.2014, 11:29     Titel:
  Antworten mit Zitat      
OK, dann bitte einfach en Update mit dem aktuellen Code und was schief läuft.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 11:35     Titel:
  Antworten mit Zitat      
ezplot('x*y-52666=0',[0,150,0,2500])

liefert schon das was ich möchte


Aber nur als Graph.

Ich möchte den Bereich größer gleich 52666 abgebildet haben. Idealerweise dreidimensional.

Meine funktion ist quasi:

a=b*c

und ich will abgebildet haben ab wann b*c größer als 5266 ist.


Wie das geht weiß ich wie gesagt nicht. Mein bisheriger Code kann vollkommener quatsch sein weil ich null ahnung habe Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 11:37     Titel:
  Antworten mit Zitat      
Ich habe mal versucht:

[X,Y]=meshgrid(0:1:120, 0:1:2500);

Z=X.^2*Y<52666
surf(X,Y,Z)

liefert nichts irgendwie

aber vom prinzip her müsste es so gehen oder nicht?



edith:

[X,Y]=meshgrid(0:1:120, 0:1:2500);

Z=X.^2*Y;
surf(X,Y,Z);

müsste jetzt noch so ergänzt werden, dass die Werte für Z>52666 anders dargestellt werden. Aktuell ist alles einfach nur schwarz.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.02.2014, 12:09     Titel:
  Antworten mit Zitat      
Schwarz ist es weil die Schritte arg eng sind:

Code:

[X,Y]=meshgrid(0:10:120, 0:100:2500);

Z=X.^2.*Y;
surf(X,Y,Z);
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.02.2014, 12:15     Titel:
  Antworten mit Zitat      
Und das andere:

Code:

[X,Y]=meshgrid(0:10:120, 0:100:2500);

Z=X.^2.*Y
Z2=Z.*(Z>52666)
surf(X,Y,Z2);
 


Hier: All Werte die kleiner als 52666 zu Null setzen - sind ja nicht viele.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 15:37     Titel:
  Antworten mit Zitat      
Super! Genau das was ich wollte ! Danke



Wenn ich die Schrittweite auf 10 stelle, wird die Kante sehr sehr grob. Auf 1 geht es so, aber das meshgrid ist schon zu fein. Ich hätte es gerne ähnlich wie bei FEM, ich weis nicht ob das geht.

Idealerweise aller werte größer als der Graph also eine saubere linie.

Mein zweites Problem ist, dass ich den Bereich auch gerne nach oben begrenzen würde.

Z2=Z.*(Z<208800) funktioniert, jedoch ist dann der untere Bereich wieder gefüllt.

Z3=Z.*(52668<Z<208800) funktioniert nicht.

Ich weiß nicht wie dies in Matlab funktioniert. Ich müsste quasi eine und verknüpfung einbauen.
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2014, 16:27     Titel:
  Antworten mit Zitat      
ich habe mal zwei grafiken angefügt. Wenn ich

Z(Z>200)=0 ergänze kommt es meinem wunsch schon sehr nahe.

( Ich hab beziehe mich jetzt auf einen anderen wert ist ja im prinzip egal)

Ich möchte die Werte zwischen 60 und 200 dargestellt haben, und zwar idealerweise als höhe von 0 bis zu ihrem wert.

( Es handelt sich dabei um den Abgasmassenstrom in abhängigkeit von Drehzahl und relativer Füllung)

Ich möchte also quasi für den Bereich größer 60 und kleiner 200 angezeigt bekommen

Das wäre echt cool

bsp2.png
 Beschreibung:

Download
 Dateiname:  bsp2.png
 Dateigröße:  190.83 KB
 Heruntergeladen:  368 mal
bsp.png
 Beschreibung:

Download
 Dateiname:  bsp.png
 Dateigröße:  198.91 KB
 Heruntergeladen:  352 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 28.02.2014, 11:54     Titel:
  Antworten mit Zitat      
Einmal zu den Gitterlinien. Wenn Die irgendwann zu viel sind. Grundsätzlich muss man die ja nicht mit darstellen:

Code:

surf(X,Y,Z2,'EdgeColor','None');
 


Zu den abgeschnittenen Graphen. So ganz verstehe ich das noch nicht. Grundsätzlich gibt es zwei Ansätze: Entweder manipuliert man die zugrunde liegenden Daten so, dass ein Darstellungsbefehl das gewünschte anzeigt, oder man überlagert mehrere Plots (hold on) geeignet.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2014, 13:05     Titel:
  Antworten mit Zitat      
Danke,

also nochmal:

Die obige (in Paint) manipulierte Abbildung zeigt das was ich gern hätte.
Ich schaffe es nicht die Daten entsprechend zu manipulieren, dass quasi ein Volumenkörper entsteht. Ich hab schön überlegt das eben in CAD zu zeichnen.

Zu den linien: Es wäre super wenn die Ränder zwischen den elementen interpolieren würden, da es so sehr abgehackt aussieht (auch wenn ich die schrittweite auf 0.1 stelle ist es immernoch keine linie.
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2014, 13:06     Titel:
  Antworten mit Zitat      
Andreas Goser hat Folgendes geschrieben:
Einmal zu den Gitterlinien. Wenn Die irgendwann zu viel sind. Grundsätzlich muss man die ja nicht mit darstellen:

Code:

surf(X,Y,Z2,'EdgeColor','None');
 


Zu den abgeschnittenen Graphen. So ganz verstehe ich das noch nicht. Grundsätzlich gibt es zwei Ansätze: Entweder manipuliert man die zugrunde liegenden Daten so, dass ein Darstellungsbefehl das gewünschte anzeigt, oder man überlagert mehrere Plots (hold on) geeignet.

Andreas


Mir ist gerade aufgefallen das Mesh(X,Y,Z2) ebenfalls zu dem ergebnis kommt Wink
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: 05.03.2014, 22:18     Titel:
  Antworten mit Zitat      
Hallo PHEV,

Bitte nutze die Code-Umgebung für Code - Danke!

Zitat:
Z3=Z.*(52668<Z<208800) funktioniert nicht.

Immer, wenn "funktioniert nicht" im Forum verwendet wird, ist eine nähere Erklärung erfoderlich.
Dies hier funktioniert nicht, weil es von rechts nach links ausgewertet wird:
Code:
% Zuerst:
R = (52668 < Z)
% Das ergibt einen LOGICAL Vektor mit dern Werten 0 und 1 für FALSE und TRUE.
% Dann:
R < 208800
% Und dies ist sowohl für 1 als auch für 0 wahr.

Du meinst:
Code:
Z3 = Z .* (52668<Z & Z<208800)

Gruß, Jan

Ich weiß nicht wie dies in Matlab funktioniert. Ich müsste quasi eine und verknüpfung einbauen.[/quote]
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.