2012-05-30 18 views
5

Esiste un modo automatico per recuperare le dimensioni della scheda dell'editor e della finestra dei comandi MATLAB? Sì, puoi semplicemente aprire la finestra delle preferenze e cercarlo da solo, ma lo voglio automatizzato. In realtà penso che questo potrebbe essere generalizzato per recuperare qualsiasi di quelle preferenze utente nello screenshot qui sotto.Ottieni dimensioni scheda tramite la riga di comando

enter image description here

risposta

7

ho trovato la soluzione abbastanza rapidamente e dopo aver scavato nel pensiero è meglio per condividere questo link:

http://undocumentedmatlab.com/blog/changing-system-preferences-programmatically/

Quindi, ciò che si fa è:

  1. Aperto il file delle preferenze e cerca la preferenza che vuoi leggere:

    edit(fullfile(prefdir,'matlab.prf')); 
    

    Nel mio caso erano le linee CommandWindowSpacesPerTab=I4 e EditorSpacesPerTab=I4 che sembrava promettente. Penso che io supporti il ​​tipo (numero intero).

  2. verificare il lavoro svolto caricando il valore:

    com.mathworks.services.Prefs.get<type>Pref(<pref-name>) 
    

    Nel mio caso:

    >> com.mathworks.services.Prefs.getIntegerPref('EditorSpacesPerTab') 
    ans = 
    
        4 
    

C'è anche una piccola sovrapposizione con questa domanda: Saving settings in matlab

EDIT: Apparentemente, quando si utilizza questo f unzione, non legge il valore predefinito della preferenza. cioè: quando non hai ancora cambiato il valore della preferenza, il valore non viene salvato nel file delle preferenze, e quindi non può essere caricato in questo modo. Le funzioni solo restituisce 0. Per ora, sto rilevando questo caso manualmente:

if loadedpref==0 
    set default 
end 

EDIT2: Io uso anche MATLAB in Linux a riga di comando, che ha il proprio ambiente scheda (di solito in default a 8). Per rilevare questa situazione ho usato il seguente:

function retval = isCommandWindowOpen() 
    jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance; 
    retval = ~isempty(jDesktop.getClient('Command Window')); 
end 
Problemi correlati