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

Fläche zwischen zwei geplotteten Vektoren einfärben

 

glockenspiel
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2020, 09:38     Titel: Fläche zwischen zwei geplotteten Vektoren einfärben
  Antworten mit Zitat      
Hallo zusammen,

ich kenne den Patch Befehl zum Einfärben aber wie kann ich die Fläche zwischen zwei geplotteten Vektoren einfärben?
Gibt es außerdem ein fertiges Kommando um eine Winkelhalbierende zwischen Ordinate und Abszisse darzustellen? Ich habe das Probleme über eine For-Schleife gelöst die von 1 bis N jedem Wert einen passenden zuordnet. Aber vielleicht gehts ja eleganter....

Vielen Dank!
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: 18.06.2020, 10:51     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich kenne den Patch Befehl zum Einfärben aber wie kann ich die Fläche zwischen zwei geplotteten Vektoren einfärben?

area und als Farbe für die untere Fläche weiß verwenden.
Code:
x = (1:10)';
y1 = x.^2;
y2 = x.^3;
h = area(x, [y2, y1]);
h(1).FaceColor = 'w';


Zitat:
Ich habe das Probleme über eine For-Schleife gelöst die von 1 bis N jedem Wert einen passenden zuordnet.

Bitte poste den Code statt ihn zu umschreiben. Die for-Schleife ist ziemlich sicher unnötig. Was du stattdessen verwenden kannst, kann ich dir aber nur sagen, wenn ich die for-Schleife auch sehe.

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
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2020, 17:21     Titel:
  Antworten mit Zitat      
f=ones (N1,);
for (r=1:N)
R(r)=(sum(f(1:r)))/(N*V) %Winkelhalbierende
end

übrigens:
Ich habe einen Graphen dessen höchster y-Wert 1 ist. Trotzdem bekomme ich ein Plotfenster mit einer y-Achse bis 1,2. Wie kann ich das (nachträglich) skalieren?
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: 18.06.2020, 17:29     Titel:
  Antworten mit Zitat      
Hallo,

idealerweise bitte dazu schreiben, was N und V sind. Vermutung:

Code:
R = cumsum(f) / (N*V);


Zitat:
Wie kann ich das (nachträglich) skalieren?

Mit ylim .

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
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2020, 18:01     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
:


Mit ylim .

Grüße,
Harald


h1=area(R,0)
h2=area(q,0)

h2.FaceColor = [0 1 0];
h1.FaceColor = [1 0 0];

hold on
plot(q)
ylim([0 1]);
hold on
plot(R)
ylim([0 1]);

Leider bekomme ich da immernoch ne y Skala bis 1,2 und neuerdings macht Matlab richtig Terror mit den Farbcodes. Bis eben hat alles geklappt. Ich habe NICHTS am Code verändert bekomme aber durchgehend Fehlermeldungen
Private Nachricht senden Benutzer-Profile anzeigen
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 09:26     Titel:
  Antworten mit Zitat      
Mittlerweile klappt es vielen Dank schon mal Harald!

Ich habe auch mal versucht eine schönere lineare Funktion zu plotten

a=0.005
f = @(x) a*x;
ezplot( f, 0, 200 )

wird auch alles ordentlich geplottet aber ich kann die Fläche zwischen der linearen Funktion und einem Vektor nicht einfärben wegen der Definition des area Befehls. Gibts ne Möglichkeit das zu umgehen?
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: 19.06.2020, 10:21     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Mittlerweile klappt es

Das ist schön. Poste dann bitte auch, was die Lösung deines Problems war. Dann haben auch andere was davon, die später auf diesen Thread stoßen.

Zitat:
neuerdings macht Matlab richtig Terror mit den Farbcodes

Ich vermute, das heißt du bekommst Fehlermeldungen? Genau genommen wahrscheinlich eine Fehlermeldung und den stack (= Kette, wie sie zustande kommt).
Wenn du beim Beheben einer Fehlermeldung Unterstützung brauchst, ist der erste Schritt, uns die Fehlermeldung mitzuteilen, idealerweise zusammen mit einem reproduzierbaren Beispiel.

Zitat:
Ich habe NICHTS am Code verändert bekomme aber durchgehend Fehlermeldungen

Das ist sehr ungewöhnlich. An sich gibt es da nur folgende Möglichkeiten, nach Häufigkeit:
1. oh... aber ich habe doch nur...
2. Überbleibsel von vorheriger Code-Ausführung machen Probleme
3. der Code arbeitet mit Zufallszahlen
4. auf dem Computer gab es, möglicherweise im Hintergrund, ein Update - z.B. des Graphiktreibers.

Zitat:
ich kann die Fläche zwischen der linearen Funktion und einem Vektor nicht einfärben wegen der Definition des area Befehls.

Das passt auch nicht zusammen. Warum verwendest du denn jetzt ezplot (was übrigens laut Doku nicht empfohlen ist)?

Warum nicht so:
Code:
a=0.005;
x = 0:200;
f = @(x) a*x;
area(x, f(x))


Wenn es weitere Probleme gibt, poste bitte den kompletten aktuellen Stand.

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
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 15:41     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Mittlerweile klappt es

Das ist schön. Poste dann bitte auch, was die Lösung deines Problems war. Dann haben auch andere was davon, die später auf diesen Thread stoßen.

Zitat:
neuerdings macht Matlab richtig Terror mit den Farbcodes

Ich vermute, das heißt du bekommst Fehlermeldungen? Genau genommen wahrscheinlich eine Fehlermeldung und den stack (= Kette, wie sie zustande kommt).
Wenn du beim Beheben einer Fehlermeldung Unterstützung brauchst, ist der erste Schritt, uns die Fehlermeldung mitzuteilen, idealerweise zusammen mit einem reproduzierbaren Beispiel.

Zitat:
Ich habe NICHTS am Code verändert bekomme aber durchgehend Fehlermeldungen

Das ist sehr ungewöhnlich. An sich gibt es da nur folgende Möglichkeiten, nach Häufigkeit:
1. oh... aber ich habe doch nur...
2. Überbleibsel von vorheriger Code-Ausführung machen Probleme
3. der Code arbeitet mit Zufallszahlen
4. auf dem Computer gab es, möglicherweise im Hintergrund, ein Update - z.B. des Graphiktreibers.

Zitat:
ich kann die Fläche zwischen der linearen Funktion und einem Vektor nicht einfärben wegen der Definition des area Befehls.

Das passt auch nicht zusammen. Warum verwendest du denn jetzt ezplot (was übrigens laut Doku nicht empfohlen ist)?

Warum nicht so:
Code:
a=0.005;
x = 0:200;
f = @(x) a*x;
area(x, f(x))


Wenn es weitere Probleme gibt, poste bitte den kompletten aktuellen Stand.

Grüße,
Harald


Ok in Zukunft werde ich immer den kompletten Code und auch meine Lösung posten.
Ganz ehrlich: Ich weiß nicht wie ich das Problem gelöst habe. Habe die Problemzeilen gelöscht und neu aufgeschrieben. Vielleicht waren da tatsächlich Code Überbleibsel oder es war doch Möglichkeit 1.

Aktuell läuft ne Simulation und danach werde ich deinen Vorschlag austesten!


Noch ne andere Frage: Gibt es nicht noch eine Matrix die Zahlenwerte Farben zuordnet sodass ich bei einer Matrix mit Vektoren, deren Einträge zwischen 0&1 liegen ich die Unterschiede der Einträge durch Farbkontraste darstellen kann?

Vielen Dank dir übrigens für die ganze Hilfe!
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: 19.06.2020, 19:05     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Gibt es nicht noch eine Matrix die Zahlenwerte Farben zuordnet sodass ich bei einer Matrix mit Vektoren, deren Einträge zwischen 0&1 liegen ich die Unterschiede der Einträge durch Farbkontraste darstellen kann?

Das klingt nach surf, mesh, contour etc. in Verbindung mit colorbar

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
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 20:06     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Gibt es nicht noch eine Matrix die Zahlenwerte Farben zuordnet sodass ich bei einer Matrix mit Vektoren, deren Einträge zwischen 0&1 liegen ich die Unterschiede der Einträge durch Farbkontraste darstellen kann?

Das klingt nach surf, mesh, contour etc. in Verbindung mit colorbar

Grüße,
Harald


Aber das sind doch alles Befehle für Gebiete und nicht Matrizen oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 20:20     Titel:
  Antworten mit Zitat      
ich habe es jetzt über imagesc hinbekommen.
Allerdings habe ich folgendes Problem: Ich habe 100 Einträge eines Vektors die sich über N Durchgänge ändern. Ich möchte nach jedem Durchgang den aktuellen Vektor abspeichern.
Das Problem ist nur dass die Einträge nach jedem Durchgang zufällig durchgemischt werden. Wie kann ich dennoch z.B. den Verlauf des zweiten Eintrages zu Beginn tracken? Und zwar so dass es egal ist ob er an Stelle 3, 18 oder 45 ist?
Private Nachricht senden Benutzer-Profile anzeigen
 
glockenspiel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 03.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2020, 20:24     Titel:
  Antworten mit Zitat      
glockenspiel hat Folgendes geschrieben:
ich habe es jetzt über imagesc hinbekommen.
Allerdings habe ich folgendes Problem: Ich habe 100 Einträge eines Vektors die sich über N Durchgänge ändern. Ich möchte nach jedem Durchgang den aktuellen Vektor abspeichern.
Das Problem ist nur dass die Einträge nach jedem Durchgang zufällig durchgemischt werden. Wie kann ich dennoch z.B. den Verlauf des zweiten Eintrages zu Beginn tracken? Und zwar so dass es egal ist ob er an Stelle 3, 18 oder 45 ist?

edit: der Sort Befehl hat Abhilfe geschafffen
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.