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]
|
|
|
|