2013-09-27 12 views
5

Esiste un modo per far eseguire a MATLAB una determinata porzione di codice ogni volta che si tenta di eseguire uno script? Per esempio, vorrei MATLAB per eseguireEsecuzione del codice "preambolo" in MATLAB

sprintf('Here we go...') 

non appena mi ha colpito il pulsante Esegui e poi passare ad eseguire il mio script, quindi se il mio script fosse

i = 1; 
i = i * i; 
display(i) 

vorrei ottenere

ans = 

Here we go... 


i = 

     1 

PS Sarei grato se le persone con una reputazione più alta correggessero il titolo della mia domanda affinché riflettesse meglio il contenuto.

+0

Anche se è probabilmente possibile rispondere cliccando sul pulsante Esegui nell'interfaccia utente, è probabile che si tratti di una soluzione orribilmente priva di documenti che è totalmente esagerata. Provate quindi alcune delle soluzioni date (più semplici e più stabili) che funzioneranno anche se chiamate uno script con il suo nome piuttosto che con il pulsante di esecuzione. –

+0

@DennisJaheruddin in realtà non è così orribile. – StrongBad

+1

Sia, è il tuo commento "non appena premo il pulsante Esegui" esattamente cosa intendi, o intendevi solo qualcosa che dovrebbe essere eseguito ogni volta che viene eseguito un codice? Le risposte di seguito sono suddivise tra l'hacking della GUI e la modifica degli script. Penso che sia perché non siamo sicuri di cosa intendi. –

risposta

3

non appena mi ha colpito il pulsante Esegui

Io parto dal presupposto che si sta parlando il pulsante di esecuzione nell'editor. In R2012a c'era una funzionalità chiamata "Esegui configurazione".Una configurazione di esecuzione era collegata a uno specifico script e includeva il codice da eseguire prima dello script in esecuzione. Non sembra essere un'impostazione globale da utilizzare su tutte le funzioni. Questa funzione sembra essere stata silenziosamente rimossa in R2012b.

In R2013b è possibile scegliere di eseguire uno script diverso. Presumibilmente potresti hackerare lo editor per ottenere il file corrente e utilizzare lo script di esecuzione personalizzato per eseguire il preambolo e quindi il file di editor corrente. Questo mi sembra un sacco di lavoro per non molto di ritorno ...

Si potrebbe creare un file chiamato myrun.m

desktop = com.mathworks.mde.desk.MLDesktop.getInstance; 
jEditor = desktop.getGroupContainer('Editor').getTopLevelAncestor; 
title = jEditor.getTitle; 
currentFilename = char(title.replaceFirst('Editor - ','')); 
fprintf('Here we go...'); 
run(currentFilename); 

e questo nell'editor sotto runRun: type code to run tipo myrun. Uno lo fai una volta che ricorda le tue preferenze e puoi quindi eseguire il codice tramite myrun con F5. Ricorderà le tue preferenze durante i riavvii.

1

Non so se ho ottenuto quello che vuoi, ma puoi dividere il tuo m file in sezioni di codice. Ad esempio:

%% Section 1 
sprintf('Here we go...') 

%% Section 2 
i = 1; 
i = i * i; 
display(i) 

Il %% è un'interruzione di sezione. Posiziona il cursore nella sezione pertinente e, nella scheda Editor, nella sezione Esegui, fai clic su Esegui sezione. (O premere Ctrl + Invio)

see here for more info.

+0

Se vuoi che venga visualizzato ogni volta che viene eseguito un determinato codice, dovrebbero essere nella stessa sezione. –

2

Il modo per farlo sarebbe quello di avere un preamble.m e doThis.m. In preamble.m si sarebbe avere questo:

sprintf('Here we go...') 

e poi in doThis.m, avresti

preamble 
i = 1; 
i = i * i; 
display(i) 

L'unico trucco per fare questo lavoro è quello di avere tutti e due sul percorso, oppure nel stessa directory.

0

Se si desidera solo questo per uno (o alcuni script) aggiungere il comando nello script o creare una funzione wrapper/collegamento.


Se si desidera che questo per molti script senza input, è possibile creare un wrapper generico:

Si supponga di voler eseguire le cose come myFun(a,b,c) quindi creare un wrapper che si può chiamare in questo modo:

myWrapper('myFun(a,b,c)')

Quindi è possibile prima chiamare il comando di visualizzazione e quindi utilizzare eval sull'input di myWrapper. Nota che questo diventa ingombrante se la tua chiamata di funzione è multilinea o contiene virgolette.


Se queste soluzioni non possono aiutare, probabilmente avete bisogno di chiedersi perché si sta cercando di fare questo e se c'è una soluzione migliore per il problema di fondo.

+0

Sidenote: Se vuoi solo vedere il messaggio per confermare che hai fatto clic correttamente: prova a digitare qualcosa come '1'. Se non lo vedi ancora stampato, Matlab sta ancora lavorando. –

Problemi correlati