2011-12-22 16 views
5

Ho scritto un'applicazione GUI che dopo aver eseguito alcune analisi su un set di dati di grandi dimensioni offre la possibilità di diverse opzioni di tracciamento dei dati (tramite un menu a comparsa).Archiviare la trama matlab all'interno di una variabile e riutilizzarla

Così ora ogni trama viene calcolata al volo dopo essere stata scelta nel menu a comparsa. Questo non è efficiente e richiede molto tempo, quindi vorrei calcolare tutti questi grafici solo una volta, quindi memorizzarli in qualche modo in variabili ed essere in grado di assegnare ognuno di essi al manico degli assi del gui.

Fondamentalmente voglio avere una trama del tipo h = plot ([1 2 3]) memorizzato nella variabile (senza visualizzazione) ed essere in grado di visualizzare su richiesta in un secondo momento. Ho provato ad assegnare la maniglia degli assi all'impugnatura della trama, ad es.

h=plot([1 2 3]); 
handles.plottingscreen_axe=h; 

... ma non visualizza nulla. Per semplificare il problema, ho provato con i dati di test sul terminale per assegnare semplicemente un handle di figure a un altro per poter in qualche modo scaricare la visualizzazione sull'altra cifra, ma non funziona nulla, ad es.

h=plot([1 2 3]); 
f=figure; 
f=h; 

... ma non sono in grado di visualizzare la trama di h per la figura f.

Ovviamente non ho esperienza con i gesti grafici, quindi immagino che questo sia qualcosa di semplice per qualcuno che lo è. Non sono stato in grado di trovare alcuna documentazione correlata a riguardo, tutti suggeriscono semplicemente di fare una funzione che sostituisce tutto ma questo è esattamente quello che sto cercando di evitare.

Qualsiasi aiuto è apprezzato e mi scuso nel caso in cui la mia domanda riguardi qualcosa di troppo semplice.

risposta

4
figure; 
ah = axes; 
hold(ah,'on'); 
%Axes must have hold on or lh(1) will become invalid after lh(2) is created 
lh(1) = plot(ah,[1 2 3],[1 2 3],'r','visible','off'); 
lh(2) = plot(ah,[1 2 3],[3 2 1],'b','visible','off'); 

Questo si accende Linea 1 (rosso)

set(lh(1),'visible','on');set(lh(2),'visible','off') 

Questo si accende linea 2 (blu)

set(lh(1),'visible','off');set(lh(2),'visible','on') 

Nella GUI è necessario un tipo di richiamata per attivare lo stato on/off visibile su tutti i manici della linea. Nota: se si tratta di insiemi di dati molto grandi e si dispone di molte linee, potrebbe consumare un sacco di memoria.

1

Una soluzione che potrei pensare è quella di memorizzare le figure sul tuo hard disk utilizzando la funzione saveas e successivamente richiamandole con il carico.

esempio:

>> plot(1:4,5:8) 
>> saveas(gcf,'test.fig') 
>> close all 
>> open('test.fig') 
1

penso che ci sia un'altra soluzione.

È possibile pre-calcolare tutte le trame, e poi semplicemente impostare la 'Visible' proprietà a 'vera' o 'false'

+0

@AeroEngy lo ha descritto molto bene, a proposito. –

Problemi correlati