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

aktuellen punkt anders ploten

 

Benedikt
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 07.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2009, 15:27     Titel: aktuellen punkt anders ploten
  Antworten mit Zitat      
hallo!
ich hab mal eine frage... und zwar:
ich lasse mir alle 1,5 sec einen punkt einer kreisbahn ploten. nun möchte ich den aktuellen punkt dieser kreisbahn mit einem besonderen zeichnen(am besten ein schiff, dass sich auch in die gefahrene richtung mitdreht Wink) und die schon geploteten punkte anders darstellen. wie geht das?? hab man irgendwie die möglichkeit auf den zuletzt geploteten punkt zuzugreifen?!?

würde mich über eure hilfe freuen!!
LG bene
Private Nachricht senden Benutzer-Profile anzeigen


Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 27.11.2009, 16:21     Titel:
  Antworten mit Zitat      
Das ist zwar nicht genau was du willst, müsste aber gehen: Alle Werte bis auf den letzten mit einem Linestyle plotten, und dann den letzten Wert mit anderem Linestyle mit hold on drüberplotten. Mit einer Schleife müsstest du den Plot dann nach jedem neuen Wert komplett neu machen. Das wäre natürlich langsam und unelegant, würde aber funktionieren.

Wie und ob man überhaupt Zugriff auf einzelne Werte im figure bekommt, kann ich dir leider auch nicht sagen. Vielleicht weiß da ja wer anders mehr zu.
Private Nachricht senden Benutzer-Profile anzeigen
 
Benedikt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 07.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2009, 16:34     Titel:
  Antworten mit Zitat      
das würde nicht funktionieren. ich bekomm immer einen neuen messwert von einem targetpc, der die messwerte für die kreisfahrt liefert. hier mal ein programmausschnitt:
Code:

x_pos=getsignal(tg2,sig_id.long_id);
y_pos=getsignal(tg2,sig_id.lat_id);
plot(handles.way,x_pos,ypos);
set(handles.way,'XLim',[x_pos-0.7 x_pos+0.7],'YLim',[y_pos-0.7 y_pos+0.7], ...
'XTick',[x_pos-0.55 x_pos+0.55],'YTick',[y_pos-0.55 y_pos+0.55]);
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 27.11.2009, 16:47     Titel:
  Antworten mit Zitat      
Warum genau würde das nicht gehen? Du könntest doch deine Messwerte in einem Vektor abspeichern, und bei jedem neuen Wert komplett neu plotten.

Code:

x_pos=[x_pos getsignal(tg2,sig_id.long_id)];
y_pos=[y_pos getsignal(tg2,sig_id.lat_id)];
plot(x_pos(1:end-1),y_pos(1:end-1),'r.')
hold on
plot(x_pos(end),y_pos(end),'b.')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Benedikt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 07.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2009, 16:58     Titel:
  Antworten mit Zitat      
oh stimmt!!
wie genau speicher ich denn die werte ab?
Code:

x_pos=[x_pos getsignal(tg2,sig_id.long_id)];

wenn ich das so mach, ist die syntax falsch. ich bräuchte noch dann quasi nur den aktuellen wert und den vorigen wert oder nicht. so wird das feld nicht unendlich groß.

danke für deine hilfe!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 27.11.2009, 17:07     Titel:
  Antworten mit Zitat      
Benedikt hat Folgendes geschrieben:
oh stimmt!!
wie genau speicher ich denn die werte ab?
Code:

x_pos=[x_pos getsignal(tg2,sig_id.long_id)];

Die Zeile hängt einfach den neuen Wert an den Ergebnisvektor hinten dran.

Benedikt hat Folgendes geschrieben:
wenn ich das so mach, ist die syntax falsch. ich bräuchte noch dann quasi nur den aktuellen wert und den vorigen wert oder nicht. so wird das feld nicht unendlich groß.

Wahrscheinlich deshalb, weil du x_pos nicht initialisiert hast. Beim 1. Zugriff existiert x_pos noch nicht, deshalb musst du x_pos und y_pos vorher leer initialisieren.

Code:
x_pos = []
y_pos = []


Benedikt hat Folgendes geschrieben:
ich bräuchte noch dann quasi nur den aktuellen wert und den vorigen wert oder nicht. so wird das feld nicht unendlich groß.

Du bräuchtest schon alle Werte, weil du sonst nur die beiden letzten Werte plottest. Du kannst den Vektor natürlich irgendwann auf eine bestimmte Länge begrenzen, dann gingen dir aber entsprechend die vorhergehenden Werte verloren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Benedikt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 07.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2009, 17:10     Titel:
  Antworten mit Zitat      
danke!! wünsche eine tolles wochenende!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Benedikt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 07.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2009, 11:07     Titel:
  Antworten mit Zitat      
hallo!
ich hab nach langem hin und her eine bessere löschung gefunden! ich poste die mal, vielleicht sucht ja ein anderer genau die gleich lösung.

hier erstmal die funktion, wo ich die messwerte und alle optischen objecte update. diese function lassen ich alle 1.5 sec durch einen timer aufrufen.
Code:
function update(hObject, sig_id)
.
.
.
phi=((getsignal(tg2,sig_id.kurs_id)))*2*pi/360;
x_pos=getsignal(tg2,sig_id.long_id);
y_pos=getsignal(tg2,sig_id.lat_id);

set(handles.way,'XLim', [x_pos(end)-0.7 x_pos(end)+0.7], 'YLim', [y_pos(end)-0.7 y_pos(end)+0.7], ...
    'XTick', [x_pos(end)-0.55 x_pos(end) x_pos(end)+0.55], 'YTick', [y_pos(end)-0.55 y_pos(end) y_pos(end)+0.55]);

plotship(x_pos,y_pos,phi,handles.way);

end
 

und jetzt die eigentliche schiffsplotfunktion. dort wird auch das schiff gedreht, wenn man eine kreisfahrt fährt.
Code:
function plotship(x,y,phi,h)
global old_ship_plot;
global n;

xs=[-0.01, -0.01, 0, 0.01, 0.01, -0.01];
ys=[-0.02, 0.02, 0.025, 0.02, -0.02, -0.02];

A=[cos(phi), sin(phi); -sin(phi), cos(phi)];

xsd = zeros(size(xs));
ysd = zeros(size(ys));
for i=1:length(xs)
    zs = [xs(i);ys(i)];
    zsd = A*zs;
    xsd(i) = zsd(1);
    ysd(i) = zsd(2);
end;

if n>1
    delete(old_ship_plot(n-1));
    n=1;
end

old_ship_plot(n)=plot(h,xsd+x, ysd+y,'r');
n=n+1;

a=plot(h,x, y);
end

die globalen var`s habe ich beim öffnen des gui`s in der open_fct vorinitialisiert.

Code:
function WiXX_GUI_Ship_OpeningFcn(hObject, eventdata, handles, varargin)
.
.
global old_ship_plot;
old_ship_plot=[];
global n;
n=1;
end

old_ship_plot dient als abspeicherung des alten schiffsplot und n ist eine zählvar, damit das fehlt old_ship_plot nicht so groß wird. alles nicht so schön aber selten Laughing

vielleicht hat ja einer von euch einen besseren vorschlag. wenn ja, postet bitte!! Wink

gruß
bene
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.