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

verticale Linie über Plot laufen lassen

 

Studi01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2009, 13:35     Titel:
  Antworten mit Zitat      
ah weiß was du mit doku meintest. ging um nicht help in der konsole sonder help im menü aufrufen.


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2009, 13:37     Titel:
  Antworten mit Zitat      
Die Dokumentation erreichst Du über Help -> Product Help oder einfach über F1. Ist meistens ausführlicher als help auf der Konsole und hübscher anzusehen.

Studi01 hat Folgendes geschrieben:
soweit ich das verstanden habe, ruf ich den timer in der hauptfunktion auf und schreib den code statt der callback-datei rein. somit bin ich im gleichen file und müsste die linehandle direkt ansprechen könne. das meintest du oder?


Nein, meinte ich nicht. Die Callbackfunktion bleibt dort, wo sie ist. Nur ist die Deklaration der Funktion nicht mehr
Code:
function draw_vertical_line(obj, event)

sondern
Code:
function draw_vertical_line(obj, event, argument1, argument2)

Die TimerFcn-Eigenschaft muss dann natürlich noch angepasst werden:
Code:
set(timerhandle, 'TimerFcn', {@draw_vertical_line, linehandle, plothandle})

In der Callbackfunktion steht das Linehandle jetzt in der Variable argument1 und das Plothandle in argument2.
Private Nachricht senden Benutzer-Profile anzeigen
 
Studi01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2009, 14:38     Titel:
  Antworten mit Zitat      
Du hast meinen großen Respekt! Funktioniert sehr fein. Zwar nicht schneller als vorher, was ja auch nicht zu erwarten war, dafür kann ich jetzt einfach einzelne messdaten überspringen und mit hilfe des timers somit das geschwindigkeitsproblem des rechners umgehen. Also: nur jeden 3ten wert anzeigen lassen und das dafür mit einer timer frequenz von 0,06s.


Code:

function draw_vertical_line(obj, event, argument1, argument2, argument3)

t=obj.UserData;
          x=[t,t];        
          set(argument1, 'xData', x);
          %argument2;
          drawnow
         
          set(argument2,'xData',x);
          drawnow
           
          t=t+3;

         obj.UserData=t;
 

Was ich jetzt allerdings noch verstehen möchte:
1. wofür brauch ich den plothandle, das plotten funktioniert mit dem drwanow befehl auch ohne dass ich was mit dem plothandle anstelle. siehst im code dass ich argument2, also den plothandle, da einfach mal reingestellt hab ihn aber nicht benötige. was müsste ich machen wenn ich einen plot "aktiv" machen möchte. also z.b. im draw file in den plot 1 noch eine zusätzliche statische linie einzeichnen möchte?

2. Dadurch dass ich im draw file den linehandle mit reingezogen hab (argument1) hab ich dann zwei linehandles, einen im draw file den ich verändere und einen im hauptfile den ich nicht verändere oder schreibt er die änderungen immer nur in das linehandle des hauptfiles. wenn der zweite fall der richtige wäre, verstehe ich nciht ganz wie das geht, da ich ja im draw file, sozusagen keinen rückgabe wert habe. zurückgeben tu ich ja nur das "t" über obj.UserData=t;

Beide fragen sind rein aus interesse gestellt. musst also nciht beantworten wenn du schon genug hast Wink

Also auf jedenfall mal herzlichsten Dank für deine Hilfe, hast mir echt super zur seite gestanden.

Solltest du noch motivation haben, hab ich noch ein kleines schmankerl zum thema video. Wird wollen ja das ganze synchron zum video laufen lassen, jetzt ist es so dass das video allerdings nach dem starten erst mal superschnell abläuft und dann ein zweites mal im normalen tempo. warum das so ist, haben wir leider keine ahnung... wenn du dich dort auch auskennen würdest wäre ich sehr glücklich wenn du den fehler finden würdest.
hier mal der code. das progamm ist in drei teile aufgebaut. hautpfile ist:

synchro:


Code:


function Data = synchro(In);

data.tag = 'synchro';
ss = get(0,'ScreenSize')
Data.hfm = figure('Position',[ss(3)/2-ss(3)/4 ss(4)/2-ss(4)/4 ss(3)/2 ss(4)/2],'Name','Synchronisation');
p = get(Data.hfm,'Position');

Data.hpp1 = uicontrol('Style','pushbutton','String','Daten laden','Position',[0 p(4)-30 70 30],'Callback',{@pp1,Data.hfm});
Data.hpp2 = uicontrol('Style','pushbutton','String','Video Laden','Position',[p(3)-70 p(4)-30 70 30],'Callback',{@pp2,Data.hfm});
Data.hpp3 = uicontrol('Style','pushbutton','String','Synchronisation Start','Position',[p(3)/2-75 p(4)-30 150 30],'Callback',{@pp3,Data.hfm});

set(Data.hfm,'UserData',Data);
Data
 


pp2 ist:

Code:

function pp2(obj,event,h)

Data = get(h,'UserData');
[fn, pn]=uigetfile('*.avi*','File auswählen'); %csv-File auswählen
file = [pn fn];
global video;
video = aviread(file);
Data.ha2 = axes('Position',[0.5 0.1 0.35 0.6]);
axis off

 


und pp3 ist:
Code:

function pp3(obj,event,h)

Data = get(h,'UserData')
%Data = get(video,'Userdata');
global video
movie (video,1,50)
 


in pp1 wird der teile dargestellt den wir grade gebaut haben
vielen, vielen dank nocheinmal!

lg,
jan
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2009, 15:00     Titel:
  Antworten mit Zitat      
Zitat:
1. wofür brauch ich den plothandle, das plotten funktioniert mit dem drwanow befehl auch ohne dass ich was mit dem plothandle anstelle. siehst im code dass ich argument2, also den plothandle, da einfach mal reingestellt hab ihn aber nicht benötige. was müsste ich machen wenn ich einen plot "aktiv" machen möchte. also z.b. im draw file in den plot 1 noch eine zusätzliche statische linie einzeichnen möchte?


Richtig - allein zum die Linie verändern brauchst Du nur das Linehandle. Das mit dem Plothandle war nur ein Beispiel, weil ich irgendwo bei Dir auch noch "plot" gelesen habe. Eine figure kannst Du jederzeit mit figure(figure_handle) (re-)aktivieren, wenn sie mit figure_handle = figure(); erzeugt wurde.

Zitat:
2. Dadurch dass ich im draw file den linehandle mit reingezogen hab (argument1) hab ich dann zwei linehandles, einen im draw file den ich verändere und einen im hauptfile den ich nicht verändere oder schreibt er die änderungen immer nur in das linehandle des hauptfiles.

Vorsicht! Das Handle ist sozusagen nur eine Identifikationsnummer für ein Objekt (hier die Linie). Die Variable, in der diese Nummer gespeichert ist, ist genaugenommen nicht das handle, sondern nur eine Variable, die als Wert das handle beinhaltet. Wenn Du diese Variable dazu benutzt, um der set-funktion mitzuteilen, welches Objekt du verändern willst, dann wird der set-funktion der Wert der Variablen (das handle) übergeben. Die wievielte Kopie der Variable (mit dem Handle als Wert) das ist oder ob Du das Handle gar von Hand eingibst (ist möglich, aber Blödsinnig) ist egal. Es wird immer das Objekt selbst verändert, niemals das Handle oder die Variable, die das Handle beinhaltet.Wenn Du ein Objekt in einer Funktion veränderst und später im base-workspace mit get() die Eigenschaften ausliest, wirst Du dort auch die veränderten Eigenschaften finden.
Zugegebenermaßen ist das ein bisschen Wirr, aber wenn man das mal verstanden hat, kann man schon fast von sich behaupten, dass man weiß, worum es bei objektorientierter Programmierung eigentlich geht.

Zitat:
Beide fragen sind rein aus interesse gestellt. musst also nciht beantworten wenn du schon genug hast Wink
So lange mir mein Arbeitgeber nichts zu tun gibt, werde ich mich auch weiterhin hier (und auch anderswo) rumtreiben und Arbeitsfremde Dinge tun Wink

Zitat:
Solltest du noch motivation haben, hab ich noch ein kleines schmankerl zum thema video. [viel Zeug]

Da muss ich leider passen - sieht an und für sich eigentlich ganz gut aus. Nur würde ich mich bei Matlab niemals darauf verlassen, dass das Video auch wirklich mit 25fps abgespielt wird - auch wenn es dransteht. Aber das macht die Sache nicht unbedingt weniger kompliziert Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
studi01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2009, 17:11     Titel:
  Antworten mit Zitat      
Alles klar, dann vielen dank für deine hilfe. werd jetzt noch ein wenig Diagrammtuning machen, dass es auch hübsch aussieht, und dann wars das für heute Wink

das synchronisieren müss ma notfalls ein wenig hintricksen wenn wir den fehler nicht mehr finden Wink

ich mach mal einen neuen thread auf, evtl findet sich noch jemand der eine idee hat.

nochmals besten dank an dich.

lg,
jan
 
SvKr

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2009, 20:05     Titel: genau das was ich verzweifelt suche
  Antworten mit Zitat      
Hallo studi01 und Epfi!

Bin bei der Suche nach exakt der gleichen Anwendung auf euch hier gestoßen!!!
Ich möchte auch ein aufgezeichnetes Video (avi) mit den zugehörigen Messdaten von Testfahrten zeitlich korrelieren. Die Idee mit der vertikalen Linie ist zudem ein nette "Schmanckerl".
Da ich MATLAB-technisch noch eher "untere Schublade" bin, habe ich teilweise Problem die "fehlenden Codestücke" die Studi01 noch nicht in diesem Thread gepostet hat zu rekonstruieren.

Könntest du, Studi01, evtl. nochmal den kompletten Code hier reinstellen?! Wär dir echt dankbar!!
Hast du inzwischen die SYnchronität zwischen Video und Daten hinbekommen?!

Grüße, Sven
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.