Funktion ständig plotten < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:04 Mi 24.10.2007 | Autor: | Pinsel |
Hallo zusammen,
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
ich habe einen Vektor mit 1000 Einträgen.
Nun soll mir Matlab die Einträge 1-100 plotten, eine Zeit t warten, dann die Einträge 2-101 ploten etc. Sodass ich quasi ein fortlaufendes Signal in meinem Plot bekomme. Abbrechen soll er auf Tastendruck.
Ist das prinzipiell möglich?
MFG
|
|
|
|
Hallo und ,
ich habe mich mal umgeschaut und bin zu folgendem Schluss gekommen:
Man kann das Ganze mit einer Endlosschleife, dem Befehl pause und einer Callback-Funktion.
Da wir es aber eleganter und genauer lösen wollen, machen wir es mal mit einem Timer. Hier haben wir einen Timer, der in festen Zeitabständen die Plot-Funktion aufruft und eine Callback-Funktion, die beim Tastendruck (innerhalb des Plots) aufgerufen wird und bei Übereinstimmung mit dem q-Zeichen den Timer stoppt.
Das Ganze sieht so aus:
1: | function plotCallback
| 2: | %PLOTCALLBACK Function for intervall plotting using a timer
| 3: |
| 4: | plot_period = 2.0; %Zeitabstand in Sekunden
| 5: | plot_max = 1000; %Anzahl der Plots insgesamt
| 6: | plot_timer = timer('Period', plot_period, 'TasksToExecute', plot_max, 'TimerFcn', @plotCallback, 'ExecutionMode', 'fixedDelay');
| 7: |
| 8: | figure('KeyPressFcn',{@keyCallback, 'q', plot_timer});
| 9: |
| 10: | start(plot_timer);
| 11: |
| 12: | %wait(plot_timer);
| 13: | %ganz schlechte Funktion, zwischendurch keine Prüfunf, ob Timer gestoppt
| 14: | %wurde...
| 15: |
| 16: | while (strcmp(get(plot_timer, 'Running'), 'on')),
| 17: | pause(plot_period);
| 18: | end;
| 19: |
| 20: | disp('done!')
| 21: |
| 22: |
| 23: | % Callback subfunction doing the plotting
| 24: | function plotCallback(obj, eventdata)
| 25: |
| 26: | k = get(obj, 'TasksExecuted'); %der Schleifenindex
| 27: |
| 28: | plot(k*10+(1:10), sin(k*10+(1:10)));
| 29: |
| 30: |
| 31: | % Callback subfunction waiting for the quit button press
| 32: | function keyCallback(obj, eventdata, quitchar, timer)
| 33: |
| 34: | if (get(obj, 'CurrentCharacter') == quitchar),
| 35: | stop(timer);
| 36: | end;
|
Ich hänge die Datei besser nochmal dran: PlotCallback.m
Gruß
Martin
Dateianhänge: Anhang Nr. 1 (Typ: m) [nicht öffentlich]
|
|
|
|