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
In der Callbackfunktion steht das Linehandle jetzt in der Variable argument1 und das Plothandle in argument2.
Studi01
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.01.2009, 13:38
Titel:
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)
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
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:
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
So lange mir mein Arbeitgeber nichts zu tun gibt, werde ich mich auch weiterhin hier (und auch anderswo) rumtreiben und Arbeitsfremde Dinge tun
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
studi01
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.01.2009, 16:11
Titel:
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
das synchronisieren müss ma notfalls ein wenig hintricksen wenn wir den fehler nicht mehr finden
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: ---
Verfasst am: 19.01.2009, 19:05
Titel: genau das was ich verzweifelt suche
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?!
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
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.