2017-10-04 8 views
0

Wie kann ich vermeiden, dass MATLAB beim Zeichnen von Daten innerhalb einer Schleife eine GUI-Abbildung f mit zwei Achsen öffnet? Hier ist ein einfaches Beispiel:Vermeiden Sie, dass die Abbildung in MATLAB kontinuierlich erscheint.

f=figure; 

ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized'); 
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized'); 

for j=1:20 
    axes(ax.h1) 
    hold on 
    plot(1:3,(1:3)+j) 

    axes(ax.h2) 
    hold on 
    plot(1:3,(1:3)+1+j) 

    pause(2) 

end 

Ich brauche mehrere Stunden Plotten Daten zu halten. Es wäre also großartig, wenn MATLAB nicht jedes Mal erscheint, wenn ein neues Diagramm erstellt wird.

Danke!

+2

Machen Sie das Bild unsichtbar ... jedoch ein viel besserer Ansatz wäre, die Daten zu speichern, dann ist alles in einem Rutsch plotten, nachdem es fertig ist. –

+2

Ich mag mich irren, aber ich glaube der Grund, warum Sie sie "aufspringen", ist, weil Sie den "Achsen" -Befehl aufrufen, was als Nebeneffekt hat, dass diese bestimmten Achsen angezeigt und in den Vordergrund gebracht werden. Wenn Sie nur zu diesen Achsen "plotten" möchten, können Sie dies direkt aus dem "plot" -Befehl tun, d. H. "Plot (ax.h1, bla bla bla"). –

+0

@ Dev-iL. Dies ist eine GUI-Figur mit einigen Schaltflächen. Ich möchte also weiter nach Daten suchen. Wenn ich die Figur unsichtbar mache, wird meine GUI unsichtbar sein, und das kann nicht passieren. Wenn ich Daten ohne Plotten aufbewahre, kann ich nicht verfolgen, was passiert. – hello123

Antwort

2

Wie @TasosPapastylianou bemerkt, bringt der axis Aufruf das Fenster nach vorne. Entfernen Sie die Aufrufe axis und hold on innerhalb der Schleife, und verwenden Sie plot(ax.h1, ..., um eine bestimmte Achse zu plotten. Sie müssen nur hold on einmal für jede Achse aufrufen, also am Anfang mit hold(ax.h1, 'on') usw. Dann sollten Ihre Grafiken weiterhin im Hintergrund aktualisiert werden, ohne jedes Mal nach vorne zu kommen.

Ihr Beispiel wird:

f=figure; 

ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized'); 
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized'); 
hold(ax.h1, 'on') 
hold(ax.h2, 'on') 

for j=1:20 
    plot(ax.h1, 1:3,(1:3)+j) 
    plot(ax.h2, 1:3,(1:3)+1+j) 

    pause(2) 

end 
Verwandte Themen