2009-04-11 12 views
5

Właśnie zacząłem eksperymentować z Matlabem, a ponieważ jestem przyzwyczajony do interfejsu Vima, staram się trzymać jak najdalej od edytora Matlaba. Martwi mnie to, że za każdym razem, gdy uruchamiam plik .m, pojawia się interfejs.Matlab na cmd (winxp)

Czy istnieje sposób, aby uruchomić test.m z wiersza cmd, i niech daje wyjście na cmd, jak to by normalnie zrobić w środowisku Matlab. Coś jak "skorupa Matlaba" (jak Python, tylko Matlaba)?

Odpowiedz

10

Aby odpowiedzieć na to pytanie, należy uruchomić Matlaba tak:

matalb -nodesktop -nosplash

ten działa zarówno na Linux i Windows. W systemie Linux wpisujesz to w wierszu poleceń, a matlab będzie działał w tym samym oknie poleceń w trybie tekstowym. Dostaniesz więc "powłokę matlab", o którą marzyłeś. W systemie Windows przejdź do katalogu, w którym zainstalowano program matlab, i wpisz to samo polecenie. Otworzy to okno linii poleceń matlab, bez wszystkich dzwonków i gwizdków pulpitu matlaba.

Moim osobistym zdaniem edytor matlab z wbudowanym debuggerem jest Twoim przyjacielem. Posiada również wiązania klawiszy emacsa, jeśli to pomaga. Łatwiej jest również wykonywać polecenia i patrzeć na wyniki w Matlab Desktop, a następnie, gdy Matlab jest uruchamiany w trybie tekstowym. Jedynym czasem, w którym naprawdę chcesz korzystać z trybu tekstowego, jest to, że twój kod matlab trwa długo, a jesteś zainteresowany tylko końcowym wynikiem. Lub jeśli używasz wielu instancji programu Matlab. Tryb tekstowy zajmuje znacznie mniej pamięci, a na Linuksie można łatwo uruchomić przebieg z wiersza poleceń i umieścić go w tle.

W rzeczywistości sprawdź argumenty wiersza poleceń dla MATLAB. Możesz robić inne ciekawe rzeczy, takie jak Matlab wykonać jedną funkcję i zakończyć, a la Perl, lub przekierować skrypt na Matlaba w ten sposób: matlab < script.m

0

W środowiskach Linux, Matlab mogą być uruchamiane w trybie tekstowym

matlab -nosplash -nodesktop 

ale to nie działa w systemie Windows., który uruchamia go w bieżącej powłoce. W systemie Windows otwiera to nowe okno tekstowe. Nie wiem, w jaki sposób można go uruchomić w bieżącej konsoli w systemie Windows.

Być może jest jakiś sposób, aby dołączyć do niego, uruchamiając go w http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/matlabwindows .shtml & http://www.google.com/search?rlz=1C1GGLS_enUS302US311 & sourceid = chrom & tj. = UTF-8 & q = matlab + polecenie + linia + okna "> tryb serwera automatyzacji.

Inną opcją, jeśli naprawdę jesteś zdesperowany, może być stworzenie maszyny wirtualnej i zainstalowanie w niej Linuksa. Wtedy wyobrażam sobie, że są sposoby na skonfigurowanie vima, aby dobrze działał z Matlabem (jestem obecnie osobą emacs i istnieją rozwiązania dla emacsa).

+0

tak, działa na oknach. Otworzy się proste okno poleceń matlaba. – Dima

5

Czy naprawdę chcesz pracować z deweloperem bez debuggera m-file? Wydaje mi się, że ograniczyłoby cię to do praktycznie trywialnych programów. Po bardzo krótkiej nauce uważam, że zintegrowany debugger Matlab jest fantastyczny (a ja jestem osobą VS).

Jeśli nalegasz, aby to zrobić, najlepszą opcją jest skompilowanie plików m do samodzielnego działania. To wymagałoby dostępu do (nie taniego) matlab compiler.

Należy zauważyć, że istnieje znacząca różnica między kompilatorem dystrybuowanym z wersjami matlab do 6,5, a tymi dystrybuowanymi z matlab 7+ (nie są znane numery wersji kompilatora). W wersji 6.5 kompilator wygenerował kod c, który mógł być edytowany i kompilowany osobno. Począwszy od 7, kompilator nie kompilował, nie konwertował ani nie generował żadnych kodów dla tej sprawy: uruchomienie "skompilowanego" programu dzisiaj praktycznie uruchamia go na wirtualnej maszynie Matlab o nazwie MCR - która obejmuje niemal wszystkie funkcje matlab. Jest ogromny - instalator MCR (instalator!) Ważony 130M ostatnio sprawdziłem.
Niektóre debaty na ten temat wciąż można znaleźć na grupach dyskusyjnych, ale teraz nie jest to ważne. W rzeczywistości podejście MCR wydaje się bliższe temu, czego szukasz.

I btw, dla mnie matlab -nosplash -nodesktop działa doskonale na windows - to uruchamia Matlaba jako konsola, ale że można pozbawić zarówno z edytora tekstu i debugger ...

2

Co mogę zrobić, to:

  1. start MATLAB
  2. nie otworzyć.Plik m wewnątrz Matlab
  3. otworzyć plik w edytorze wyboru
  4. uruchomić funkcję z poziomu MATLAB jak zwykle

Nie mogę sobie wyobrazić żadnego powodu, dlaczego to nie działa jak MATLAB nie powinien dbać co było używane do edycji pliku.

To nie da ci "powłoki", ale całego GUI, ale nie mogę wymyślić żadnego powodu, dla którego nie chciałbyś mieć tego, jeśli jest dostępny.

+1

Możesz nie chcieć całego GUI, jeśli masz wolny komputer. – Dima

0

Miałem ten sam problem co Kiguryi. Musiałem jechać Matlab z Pythonem więc znalazłem to rozwiązanie:

W Pythonie:

import os 

os.chdir('W:\\monrépertoire') 

os.spawnl(os.P_NOWAIT, 'monscript.bat') 

W monscript.bat:

matlab.exe -r interp_3D -nodesktop –nosplash 
0

Istnieją przypadki, gdy rzeczywiście jest potrzebna i nie wiele debugowanie stan Matlaba zostanie zachowany między inwokacjami. Jeden (jedyny?) Przykład to Emacs org-mode. może być użyty do napisania tekstu przeplecionego za pomocą kodu zgodnie z literate programming etc. Chociaż możliwe jest użycie komentarzy w Matlab i publish code, czy to HTML czy LaTeX, to jednak wymaga to pozostawienia komfortu Emacsa.

Istnieje standalone program available, który używa silnika Matlab do oceny poleceń odbieranych na stdin i zrzutu wyniku. Ta konkretna wersja nie obsługuje jednak poleceń wielowierszowych, takich jak/else/end lub for/end. To jest ograniczenie engEvalString, które oczekuje wszystkiego od razu. Istnieje ugly workaround available, który sprawia, że ​​jest on wystarczająco dobry dla trybu org.

#+begin_src matlab :session *MATLAB* :exports none :cache no :results value 
if 3>1 
'wow!!!' 
end 
#+end_src 

#+RESULTS: 
: wow!!!