2013-09-27 12 views
5

Czy jest jakiś sposób, aby MATLAB uruchamiał pewien fragment kodu za każdym razem, gdy próbujesz uruchomić skrypt? Na przykład, chciałbym MATLAB uruchomićUruchamianie kodu "preambuły" w MATLAB

sprintf('Here we go...') 

jak tylko nacisnąć przycisk Uruchom, a następnie przejść do wykonania mojego skryptu, więc jeśli mój skrypt były

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

chciałbym uzyskać

ans = 

Here we go... 


i = 

     1 

PS Byłbym wdzięczny, gdyby ludzie o wyższej reputacji poprawili tytuł mojego pytania, aby lepiej odzwierciedlał treść.

+0

Chociaż prawdopodobnie możliwe jest udzielenie odpowiedzi na kliknięcie przycisku uruchamiania w interfejsie użytkownika, prawdopodobnie będzie to strasznie nieudokumentowane rozwiązanie, które jest całkowicie przesadzone. Stąd wypróbuj niektóre z podanych (prostszych i bardziej stabilnych) rozwiązań, które zadziałają również, jeśli wywołasz skrypt za pomocą jego nazwy, a nie za pomocą przycisku uruchamiania. –

+0

@DennisJaheruddin to naprawdę nie jest takie straszne. – StrongBad

+1

Sia, to twój komentarz "jak tylko kliknę przycisk Uruchom" dokładnie o co ci chodzi, czy też miałeś na myśli coś, co powinno zostać wykonane za każdym razem, gdy kod się uruchamia? Poniższe odpowiedzi są podzielone na hakowanie GUI i modyfikowanie skryptów. Myślę, że to dlatego, że nie jesteśmy pewni, co masz na myśli. –

Odpowiedz

3

jak tylko nacisnąć przycisk Run

jestem zakładając mówisz przycisk Uruchom w edytorze. W R2012a była funkcja o nazwie "Uruchom konfigurację".Konfiguracja uruchamiania została powiązana z określonym skryptem i zawartym w nim kodem do wykonania przed uruchomieniem skryptu. Wygląda na to, że nie ma globalnego ustawienia dla wszystkich funkcji. Ta funkcja prawdopodobnie została usunięta dyskretnie w R2012b.

W R2013b można wybrać uruchomienie innego skryptu. Prawdopodobnie możesz zhackować editor, aby pobrać bieżący plik i użyć niestandardowego skryptu uruchamiania, aby uruchomić preambułę, a następnie bieżący plik edytora. Wydaje się to dużo pracy za niewiele zamian ...

Można by utworzyć plik o nazwie 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); 

i to w edytorze pod runRun: type code to runmyrun typu. Robisz to, gdy zapamiętasz swoje preferencje, a następnie możesz uruchomić kod przez myrun z F5. Zapamiętuje twoje preferencje dotyczące ponownych uruchomień.

1

Nie wiem, czy mam to, co chcesz, ale możesz podzielić swój plik m na sekcje kodu. Na przykład:

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

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

Numer %% to podział na sekcje. Umieść kursor w odpowiedniej sekcji, a na karcie Edytor, w sekcji Uruchom kliknij Uruchom sekcję. (Lub naciśnij Ctrl + Enter)

see here for more info.

+0

Jeśli chcesz, aby był wyświetlany za każdym razem, gdy dany kod jest uruchamiany, powinien on znajdować się w tej samej sekcji. –

2

Sposób to zrobić byłoby mieć preamble.m i doThis.m. W preamble.m musiałbyś to:

sprintf('Here we go...') 

a potem w doThis.m, trzeba

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

Jedyny trick dokonywania tej pracy jest mieć je zarówno na drodze, lub w ten sam katalog.

0

Jeśli chcesz tego tylko dla jednego (lub kilku skryptów), dodaj polecenie w skrypcie lub utwórz funkcję/skrót opakowania.


Jeśli chcesz to dla wielu skryptów bez wejścia, można utworzyć rodzajowe otoki:

Załóżmy, że chcemy uruchomić rzeczy jak myFun(a,b,c) następnie utworzyć opakowanie, które można nazwać tak:

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

Następnie można najpierw wywołać polecenie wyświetlania, a następnie użyć eval na wejściu myWrapper. Zauważ, że staje się to uciążliwe, jeśli twoje wywołanie funkcji jest wielowierszowe lub zawiera cytaty.


Jeśli te rozwiązania nie pomoże, prawdopodobnie trzeba zadać sobie pytanie, dlaczego próbujesz to zrobić i czy istnieje lepsze rozwiązanie dla bazowego problemu.

+0

Sidenote: Jeśli chcesz zobaczyć komunikat potwierdzający, że kliknąłeś poprawnie: spróbuj wpisać coś takiego jak "1". Jeśli nie widzisz, żeby było jeszcze drukowane, Matlab nadal działa. –

Powiązane problemy