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

Punkte im plot miteinander verbinden in einer for-Schleife

 

dressel1987

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2010, 19:12     Titel: Punkte im plot miteinander verbinden in einer for-Schleife
  Antworten mit Zitat      
hallo miteinander,

ich habe eine frage:

ich bekomme in einer for-schleife verschiedene werte !

jetzt möchte ich diese werte in einem diagramm darstellen !

allerdings plottet mir matlab nur die einzelnen punkte !

ich möchte aber gerne eine durchgehende linie haben !

ist das irgendwie möglich ?


vielen dank im voraus !

gruß dressel1987


Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 26.08.2010, 00:19     Titel:
  Antworten mit Zitat      
Möchtest du die Werte während der Ausführung der Schleife "live" aktualisiert haben oder reicht dir eine nachträgliche Darstellung?
Wie sieht dein Code bisher aus?
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
hippa
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2011, 09:40     Titel: Gleiches Problem wie dressel1987
  Antworten mit Zitat      
Habe das gleiche Problem...es würde allerdings eine nachträgliche Darstellung
reichen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Micha85

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2011, 09:54     Titel:
  Antworten mit Zitat      
Für die nachträgliche Version ist das sehr einfach:
Code:

x = 1:10;
y = rand(10,1)
plot(x,y,'-')
 

Grüße
Micha]
 
hippa
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2011, 10:39     Titel:
  Antworten mit Zitat      
Danke für deine antwort.
Bei meinem code funktioniert das leider nicht so einfach

Ich habe:
Code:

Beta=-0.5;
phi1=0.001;
for beta=Beta:0.1:1

  H=0;
  Vgl=0;
  while H>=Vgl
    phi1=phi1+0.1;
    phi2=beta.*phi1;
    Berechnung
    H=.... %Berechnung
    Vgl= .....%Berechnung
   end
   plot(phi2,phi1,'x');
   hold on;
end
hold off;
 

Hier werden mir immer nur einzelne Punkte erzeugt und ich würde jetzt gerne diese Punkte verbinden. Wisst ihr/du wie das funktionieren könnte??
Private Nachricht senden Benutzer-Profile anzeigen
 
hippa
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 26.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2011, 11:02     Titel:
  Antworten mit Zitat      
kann ich eventuell iwo die werte die jedesmal aus meiner while schleife "mitschneiden"...so dass mir jedes ergebnis iwo abgespeichert wird?? weil dann könnte ich es ja so machen wie Micha85 es mir vorgeschlagen hat, oder??
Private Nachricht senden Benutzer-Profile anzeigen
 
Micha85

Gast


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

na klar. Leg einfach dein phi1 und phi2 als Vektoren an:
Code:

Beta=-0.5;
phi1=0.001;
for beta=Beta:0.1:1

  H=0;
  Vgl=0;
  i=2;
  while H>=Vgl
    phi1(i)=phi1(i-1)+0.1;
    phi2(i)=beta.*phi1(i);
    Berechnung
    H=.... %Berechnung
    Vgl= .....%Berechnung
   i=i+1;
   end
   plot(phi2,phi1,'-x');
   hold on;
end
hold off;
 


Die Indizierungen mit dem i musst Du eben noch überprüfen. Irgendwie fehlt prinzipiell auch noch ein Startwert für das phi2. Oder das phi1 wird beim ersten Schleifendurchlauf überschrieben. Dann muss das i=1; anfangs eingegeben werden.

Du bekommst das schon hin.
Grüße
Micha
 
F KT
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 13.09.11
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 26.09.2011, 14:41     Titel: verbinden von punkten in einem plot
  Antworten mit Zitat      
hi,
ich habe das gleiche problem, nur funktionert die eingabe '-x' leider nicht,

Code:

test=[1 2 3 4 5 6 7 8 9 10];
test(test>7)=7;
n=length(test);
for i=1:1:n
     en(i)=sum(test(1:i));
     a=i-1;

     hold on
     plot(en(i),a,'-x')


end
hold off
 


hat jemand eine idee, wie ich die punkte verbinden kann?
danke schon mal!
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: 26.09.2011, 17:03     Titel: Re: verbinden von punkten in einem plot
  Antworten mit Zitat      
Hallo F KT,
Code:

test=[1 2 3 4 5 6 7 8 9 10];
test(test>7)=7;
n=length(test);
datay = inf(1, n);  % preallocate
datax = 0:n-1;
lineH = [];
for i = 1:n
     datay(i) = sum(test(1:i));
     
     if isempty(lineH)
       lineH = plot(datax, datay, '-x');
     else
       set(lineH, 'YData', datay);
     end
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
F KT
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 13.09.11
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 26.09.2011, 17:25     Titel:
  Antworten mit Zitat      
hi
danke jan
hab jetz auch noch eine lösung gefunden;)

Code:

test=[1 2 3 4 5 6 7 8 9 10];
test(test>7)=7;
n=length(test);
for i=1:1:n
        en(i)=sum(test(1:i));
        a(i)=i;
end

a=transpose(a);
en=transpose(en);
EN=[a en];
plot(EN(:,1),EN(:,2),'-x')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Fuzzy
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 10.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2013, 08:34     Titel: Noch ne Möglichkeit
  Antworten mit Zitat      
Hallo zusammen,
ich hatte vor kurzem ein ähnliches Problem.
Ziel war herinkommende Messwerte zyklisch in einen plot einzuzeichnen (und nicht erst am Schluss).

Der Trick ist einfach, dass ihr keine Einzelpunkte plotten dürft, da er dann eben wirklich nur den einen Punkt zeichnet.
Um eine Linie zeichnen zu können braucht man nun mal zwei Punkte (einen Start und einen Endpunkt).

Im Fall von eintreffenden Messwerten kann man das Problem ganz einfach lösen, indem man sich eine Linie zwischen dem vergangenen
Messwert (i-1) und dem aktuellen Messwert (i) zeichnen lässt.
Dieser Trick muss natürlich sowohl für die x-Koordinate (Zeitwert) als auch für die y-Koordinate (Amplitude) angewendet werden.

hier mal ein Beispiel (evtl. nütz es ja jemandem):

Code:

clc; clear all; close all;
 
A = rand(100,100);
t = 0:1:100;

figure(1);
i = 1;

for a=0:1:100;

    if i>1
        plot(t(i-1:i), A(i-1:i,1), '-+g');
        hold on;  
    end
   
i = i+1;
end;

 
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.