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 bei bestimmten x-Wert abschneiden

 

Amateur12345
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 29.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2015, 10:44     Titel: Graph bei bestimmten x-Wert abschneiden
  Antworten mit Zitat      
Hallo Zusammen,

ich plotte zwei Graphen.

Code:

figure(3)
hold on
grid on


plot(v_B(:,1),v_B(:,2),'LineWidth',2);
plot(v_A(:,1),v_A(:,2),'r','LineWidth',2);
 


Ich möchte die beide Graphen nun aber bei einem exakten X-Wert (x=5,5) abschneiden... Somit sollte sich der X-Bereich nur über 0-5 erstrecken.

Kann mir das jemand beantworten?
Sorry bin noch neu.. -.-
_________________

Grüße Amateur
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.02.2015, 10:51     Titel:
  Antworten mit Zitat      
du köntest entweder die achsen begrenzen oder aber den vektor mit logischer indizierung übergeben.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Amateur12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 29.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2015, 11:01     Titel:
  Antworten mit Zitat      
Wenn ich die Ache begrenz, dann bedeutet dass, das mein Graph bis an den Rand des Fensters geht oder? Das wollte ich vermeiden. Gibt es nicht eine Funktion, die automatisch die Bereiche eines Plots definiert?

Grüße
_________________

Grüße Amateur
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: 02.02.2015, 11:23     Titel:
  Antworten mit Zitat      
Hallo Amateur12345,

Wenn man den "Bereich des Plots" begrenzt, werden die enthaltenen Graphen bis an den Rand ghezeichnet. Das ist die Definition von "Bereich des Plots begrenzen".
Du möchtest den Bereich der geplotteten Daten begrenzen. Also:
Code:
x = 1:10;
y = rand(1, 10);

mask = (x < 6);
plot(x(mask), y(mask));

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Amateur12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 29.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2015, 14:02     Titel:
  Antworten mit Zitat      
Servus Jan,

ich versteh das leider nicht. Bin Matlab Neuling und habe eben bisschen rumprobiert, bin aber nicht zur gewollten Lösung gekommen.

Habe es jetzt so versucht:

Code:


figure(3)
hold on
grid on

mask = (v_B < 5,5);
mask = (v_A < 5,5);
plot(v_B(mask),v_B(mask),'LineWidth',2);
plot(v_A(mask),v_A(mask),'r','LineWidth',2);

 


Jetzt wird zwar der Graph bei 5,5 abgeschnitten (ist schonmal super), aber leider hat er nicht mehr seine ursprüngliche Form, sondern ist eine Gerade.

Woran liegt das, bzw. was muss ich verändern, damit mein Graph trotz des Abschneidens seine Form behält?
_________________

Grüße Amateur
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.02.2015, 14:29     Titel:
  Antworten mit Zitat      
Zitat:
Code:
mask = (v_B < 5,5);
mask = (v_A < 5,5);

du überschreibst deine variable mask. das macht keinen sinn.
Code:
plot(v_B(mask),v_B(mask),'LineWidth',2);

du plottest V_B über V_B. das sollte immer eine grade ergebe. am besten du guckst dir das beispiel von jan nochmal an. besonders den teil mit x und y im plot. ^^
ich kann dir nur das getting startet in der matlab doc empfehlen. die meisten grundlegenden fragen werden dort beantwortet.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Amateur12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 29.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2015, 14:54     Titel:
  Antworten mit Zitat      
Servus Leute,

ich versteh es leider nicht^^

Wie muss ich denn meinen Code abändern?
Könnt ihr mir das bitte sagen Wink


Grüße
_________________

Grüße Amateur
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: 02.02.2015, 18:55     Titel:
  Antworten mit Zitat      
Hallo Amateur12345,

Statt "5,5" meinst Du sicher "5.5", oder? Das ist ein ziemlich wichtiger Unterschied in Matlab.

Code:
figure(3)
hold on
grid on

mask = (v_B < 5.5);  % Für die Maske sind nur die x-Werte von Belang
plot(v_B(mask),v_A(mask),'LineWidth',2);

Hilft das?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Amateur12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 29.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2015, 08:42     Titel:
  Antworten mit Zitat      
Servus Jan,

danke für deine Hilfe! Aber wenn ich das so in Matlab hau, entsteht ein ganz komischer Graph.

Nochmal: Wenn ich das hier eingebe entsteht der Graph, den ich haben möchte der passt soweit.
Code:

figure(3)
hold on
grid on
plot(v_A(:,1),v_A(:,2),'r','LineWidth',2);
plot(v_B(:,1),v_B(:,2),'LineWidth',2);

 


Das ist keine Gerade. Ich möchte jetzt den Graph einfach genau so wie er ist (bzw. beide Graphen) bei einem X-Wert von 5.5 abschneiden.

P.S. @ Jan, ja ich meinte 5.5 statt 5,5! Danke dafür schonmal.
_________________

Grüße Amateur
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 03.02.2015, 13:09     Titel:
  Antworten mit Zitat      
Code:
figure(3)
hold on
grid on
plot(v_A(mask1,1),v_A(mask1,2),'r','LineWidth',2);
plot(v_B(mask2,1),v_B(mask2,2),'LineWidth',2);


Die Masken solltest du aus der 1. Spalte deiner Matrizen erstellen und nicht aus den ganzen Matrizen und dann wie oben natürlich auf die entsprechenden Spalten für x und y zugreifen.
_________________

>> why
The computer did it.
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.