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

Mehrere Graphen zeichnen

 

soyyo123
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.11.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2020, 19:48     Titel: Mehrere Graphen zeichnen
  Antworten mit Zitat      
Hallo zusammen,

ich möchte zwei Funktionen für große Werte vergleichen und sie in ein gemeinsames Graphikfenster zeichnen. Ich habe schon vieles ausprobiert und nachgelesen, bin leider immer kläglich gescheitert. Manchmal hat es mir die erste Funktion gezeichnet, bei der zweiten kam aber immer die Fehlermeldung: Index exceeds the number of array elements

Um jede Hilfe und jeden Tipp wäre ich sehr dankbar!

Code:

x = 1:1:100;
y1 = 1/x - 1/(x+1);
plot(x,y1)

hold on

y2 = 1/(x(x+1));
plot(x,y2)


hold off
 


Liebe Grüße

soyyo
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.11.2020, 23:13     Titel:
  Antworten mit Zitat      
Hallo,

Vektoren komponentenweise teilen und bei Multiplikation * nicht vergessen.
Code:
y1 = 1./x - 1./(x+1);
y2 = 1./(x*(x+1));


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
soyyo123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.11.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2020, 09:16     Titel:
  Antworten mit Zitat      
Lieber Harald,

vielen herzlichen Dank für deine Antwort! Das hatte ich auch schon versucht, es hat leider auch nicht funktioniert.

Mal was Grundsätzliches: plotte ich Funktionen direkt im Command Window oder mache ich dafür ein extra file?

Mein größtes Problem ist, dass es gar kein Fenster öffnet für den Funktionsgraphen.

Im Command Window funktioniert gar nichts.

Meine erste Datei, die ich versucht habe ist:

Code:

x = 1:1:50;
y1 = 1./x - 1./(x+1);
plot(x,y1)

hold on

y2 = 1./(x*(x+1));
plot(x,y2)


hold off
 


Dann habe ich noch eine zweite versucht:

Code:

figure(2)

x = 1:1:100;

f = 1./x - 1./(x+1);

plot(x,f);

hold on

g = 1./ (x*(x+1);

plot(x,g);

 



Vielen lieben Dank im Voraus!

LG

Soyyo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.11.2020, 12:05     Titel:
  Antworten mit Zitat      
Hallo,

wenn etwas "nicht funktioniert", dann schreibe bitte genau, was daran nicht funktioniert. Bekommst du eine Fehlermeldung oder ein unerwartetes Verhalten?

Zitat:
plotte ich Funktionen direkt im Command Window oder mache ich dafür ein extra file?

Das kannst du machen wie du möchtest. Generell würde ich das Command Window für einzelne Befehle verwenden, den Editor für eine Kombination mehrerer Befehle (wie in deinem Fall).

Zitat:
Mein größtes Problem ist, dass es gar kein Fenster öffnet für den Funktionsgraphen.

Kann es sein, dass das Fenster im Hintergrund ist? Gib mal vor dem Plotten
Code:

ein, um eventuell im Hintergrund offene Fenster zu schließen.
Wenn das nicht hilft, starte MATLAB mal neu.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
soyyo123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.11.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2020, 12:26     Titel:
  Antworten mit Zitat      
Lieber Harald,

vielen Dank! Ich habe Matlab neu gestartet und es hat ein endlich ein Graphikfenster geöffnet und die Funktionen gezeichnet. Diese unterscheiden sich allerdings so wenig, dass man sie wohl nur als eine erkennt.

Ich habe sie in zwei Farben zeichnen lassen, was allerdings auch nicht geholfen hat:

Code:

x = 1:1:1000;
y1 = 1./x - 1./(x+1);
plot(x,y1,'b')

hold on

y2 = 1./(x.*(x+1));
plot(x,y2,'r')


hold off
 


Hast du eine Idee, wie ich das sichtbar machen könnte?

Oder wie kann ich die Funktionswerte denn als Tabelle darstellen lassen? Ich habe den table-Befehl genutzt und es kam die Fehlermeldung:

"You might have intended to create a one-row table with the character vector 'b' as one of its variables. To
store text data in a table, use a string array or a cell array of character vectors rather than character
arrays. Alternatively, create a cell array with one row, and convert that to a table using CELL2TABLE."

Was habe ich falsch gemacht? Hier mein Code als Tabelle:

Code:

x = 1:1:1000;
y1 = 1./x - 1./(x+1);
table(x,y1)

hold on

y2 = 1./(x.*(x+1));
table(x,y2)


hold off
 


Es öffnet ein Graphikfenster (ohne Graph) und spuckt mir folgende Tabelle im Command Window aus:

ans =

1×2 table

x y1
_______________ _______________

[1×1000 double] [1×1000 double]


ans =

1×2 table

x y2
_______________ _______________

[1×1000 double] [1×1000 double]


Liebe Grüße

Soyyo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.11.2020, 13:17     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Diese unterscheiden sich allerdings so wenig, dass man sie wohl nur als eine erkennt.

Sie unterscheiden sich genau genommen gar nicht. Erweitere bei y1 bzw. f den ersten Bruch mit (x+1) und den zweiten mit x. Dann kannst du die Brüche subtrahieren, und es kommt genau y2 bzw. g heraus.

Tables sind in erster Linie für Daten mit wenigen Spalten und einer ggf. größeren Anzahl Zeilen gedacht. Ich würde die Daten transponieren und zudem Ergebnisse immer in einer Variable ablegen:
Code:
t1 = table(x',y1')


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
soyyo123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.11.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2020, 15:56     Titel:
  Antworten mit Zitat      
Lieber Harald,

ein erneutes Dankeschön für deine Antwort! Das ist mir jetzt erst klar geworden mit den beiden Funktionen. Ich soll zeigen, dass sie für große Zahlen numerisch abweichen.

Könnte ich das mit Verkettungen darstellen? Wenn ja, wie kann ich Funktionen mit Matlab verketten?

Danke schon im Voraus

Soyyo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.11.2020, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht, was du hier mit "Verkettungen" meinst.
Wenn du dich bei der Auswertungen auf solche große Zahlen konzentrierst, sollte die Abweichung wohl sichtbar werden. Und am besten dürfte man die Abweichung sehen, indem man die Differenz berechnet.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)

Zuletzt bearbeitet von Harald am 07.11.2020, 16:40, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
soyyo123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.11.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2020, 16:33     Titel:
  Antworten mit Zitat      
Hallo Harald,

mit Verkettung meinte ich die Verknüpfung von Funktionen, also etwa f(g(x)).

Danke!

LG

Soyyo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.11.2020, 16:44     Titel:
  Antworten mit Zitat      
Hallo,

sicher kannst du das machen, z.B. y1 zuerst berechnen und dann y1 statt x in die andere Formel einsetzen. Ich sehe nur überhaupt keinen Zusammenhang zu diesem Problem.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.