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 Kurven ausmalen

 

fmasmas
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 07:38     Titel: Fläche zwischen zwei Kurven ausmalen
  Antworten mit Zitat      
Hallo Matlab Gemeinde!

Ich hätte ein kleines Problem und zwar möchte ich die Fläche zwischen zwei Kurven ausmalen oder schraffieren, sollte eigentlich keine Hexerer sein.

mit area hab ichs versucht, jedoch nicht zum Ziel gekommen

Code:

plot(X1,Y1,X2,Y2)                 %Daten liegen als Vektoren
area(X1,Y1)                         %malt mir alles unter der ersten Kurve
 


Meine Frage wie kann ich diese Funktion richtig anweden, bin leider zu keinem Ziel gekommen,
bzw wie kann ich die Farbe wählen, mit der die Fläche angemalt wird.

Danke im vorhinein
fmasmas
Private Nachricht senden Benutzer-Profile anzeigen


Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 10:13     Titel:
  Antworten mit Zitat      
Hi,

Hilft dir das weiter?

Code:

x1=linspace(0,10,1000);
x2=linspace(0,10,1000);
y1=sin(x1);
y2=0.05*x2.^2;

figure,plot(x1,y1,x2,y2);
hold on;

filler=fill([x1;x2],[y1;y2],'r','edgecolor','r')

 

Nun ist die Fläche rot gefüllt.

Zum Schraffieren kannst einfach einen Teil der gefüllten Linien löschen:

Code:


delete(filler(mod((1:length(filler)),20)~=0));
% Lässt nur jeden 20. Teil von fill übrig-> Schraffur

 


Wenn du nur den komplett von den Kurven eingeschlossenen Teil füllen willst, müsstest du erst die Schnittpunkte bestimmen, und dann nur entsprechende Teile füllen.
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 10:29     Titel:
  Antworten mit Zitat      
Hier die Ergänzung für nur komplett eingeschlossene Flächen(+Verbesserungen):

Code:

x1=linspace(0,20,1000);
x2=linspace(0,20,1000);
y1=sin(x1);
y2=cos(x2)+0.01*x2.^2;

figure,plot(x1,y1,x2,y2);
hold on;

schnittpunkte=find(diff(y1-y2>0));
for i=1:length(schnittpunkte)-1
    t=schnittpunkte(i):schnittpunkte(i+1);
    t=t(mod(t,10)==0);  % kleinere Zahl-> mehr Linien
    filler=fill([x1(t);x2(t)],[y1(t);y2(t)],'r','edgecolor','r');
end


 
 
fmasmas
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 11:02     Titel:
  Antworten mit Zitat      
Gast1 hat Folgendes geschrieben:
Hi,

Hilft dir das weiter?

Code:

x1=linspace(0,10,1000);
x2=linspace(0,10,1000);
y1=sin(x1);
y2=0.05*x2.^2;

figure,plot(x1,y1,x2,y2);
hold on;

filler=fill([x1;x2],[y1;y2],'r','edgecolor','r')

 

Nun ist die Fläche rot gefüllt.

Zum Schraffieren kannst einfach einen Teil der gefüllten Linien löschen:

Code:


delete(filler(mod((1:length(filler)),20)~=0));
% Lässt nur jeden 20. Teil von fill übrig-> Schraffur

 


Wenn du nur den komplett von den Kurven eingeschlossenen Teil füllen willst, müsstest du erst die Schnittpunkte bestimmen, und dann nur entsprechende Teile füllen.


Ich danke für die schnelle Hilfe...

ich habs ausprobiert, jedoch stimmt etwas nicht.

Ich hab die 2 bilder eingefügt

Ich schätze mal, dass etwas mit dem Anfang und dem Ende der Vektoren nicht passt und somit die Füllüng nicht richtig ist.
Kann man die Füllüng irgendwie begrenzen?

Nochmals Danke

fmasmas

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  52.86 KB
 Heruntergeladen:  3432 mal
untitled1.JPG
 Beschreibung:

Download
 Dateiname:  untitled1.JPG
 Dateigröße:  62.3 KB
 Heruntergeladen:  3456 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 11:36     Titel:
  Antworten mit Zitat      
Hi,

Das könnte daran liegen, dass du Zeilenvektoren benutzt.
Versuch es mal mit Spaltenvektoren.
 
fmasmas
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 11:52     Titel:
  Antworten mit Zitat      
DANKE!

habs auf Spalte umgeändert...

könntest du mir auch sagen weshalb das probleme gemacht hat?

danke,
fmasmas
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_User85
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2015, 17:28     Titel:
  Antworten mit Zitat      
Ich hätte nochmal eine frage zu der verwendeten Schraffur.

Die Schraffur wird ja in diesem Fall durch vertikale Linien realisiert.


Ist es auch möglich die Schraffur schräg verlaufen zu lassen, z. B. im 45° Winkel?
Private Nachricht senden Benutzer-Profile anzeigen
 
EccoBravo
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 12.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2018, 16:10     Titel:
  Antworten mit Zitat      
Super Beitrag!
Beim Nachempfinden dieser Procedure gab es noch das Problem, dass vom letzten Kurvenpunkt bis zum ersten Kurvenpunkt eine Verbindungslinie gezogen wird.
Wie kann ich das vermeiden?

VG + VD
EB
_________________

Ich habe mich nicht mit Ruhm bekleckert, dafür aber andere.
Meine Hobbies,
bunt zuschauen und rhytmisch zuhören!
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.