Matlab на cmd (winxp) - PullRequest
       50

Matlab на cmd (winxp)

5 голосов
/ 11 апреля 2009

Я только начал что-то экспериментировать с Matlab, и, поскольку я привык к интерфейсу Vim, я стараюсь как можно больше оставаться вне редактора Matlab. Меня беспокоит то, что каждый раз, когда я запускаю файл .m, он вызывает интерфейс.

Есть ли способ запустить test.m из строки cmd и позволить ему выдавать вывод в cmd, как это обычно делается в среде Matlab. Что-то вроде «оболочки Matlab» (как у Python, только у Matlab)?

Ответы [ 6 ]

10 голосов
/ 13 апреля 2009

Чтобы ответить на ваш вопрос, запустите matlab следующим образом:

matalb -nodesktop -nosplash

Это работает как на Linux, так и на Windows. В Linux вы набираете это в командной строке, и Matlab будет запускаться в том же командном окне в текстовом режиме. Таким образом, вы получите "оболочку Matlab", которую вы хотели. В Windows перейдите в каталог, в котором установлен Matlab, и введите ту же команду. Он откроет урезанное окно командной строки matlab без всяких наворотов рабочего стола matlab.

Теперь, по моему личному мнению, редактор matlab с его встроенным отладчиком - ваш друг. Он также имеет привязки клавиш Emacs, если это помогает. Также проще выполнять команды и просматривать результаты на рабочем столе Matlab, чем когда Matlab запускается в текстовом режиме. Единственный раз, когда вы действительно хотите использовать текстовый режим, это если ваш код Matlab занимает много времени, и вас интересует только конечный результат. Или, если вы используете несколько экземпляров Matlab. Текстовый режим занимает гораздо меньше памяти, а в Linux вы можете легко запустить запуск из командной строки и перевести его в фоновый режим.

На самом деле, проверьте аргументы командной строки для matlab. Вы можете сделать другие интересные вещи, например, заставить matlab выполнить одну функцию и выйти из нее, либо выполнить perl, либо перенаправить скрипт в matlab следующим образом: matlab < script.m

5 голосов
/ 13 апреля 2009

Вы действительно хотите заниматься разработкой без отладчика m-файлов? Сдается мне, что вы бы ограничились практически тривиальными программами. После очень короткого периода обучения, я думаю, вы обнаружите, что интегрированный отладчик Matlab будет фантастическим (а я - специалист по VS).

Если вы настаиваете на этом, ваш лучший вариант - это скомпилировать ваши m-файлы для самостоятельного запуска. Для этого потребуется доступ к (не дешевому) компилятору matlab .

Обратите внимание, что существует значительная разница между компилятором, распространяемым с версиями Matlab до 6,5, и компилятором, распространяемым с Matlab 7+ (не знаю номеров версий компилятора). В 6.5 компилятор генерировал c-код, который можно было редактировать и компилировать отдельно. Начиная с 7 лет, компилятор не выполнял компиляцию, преобразование или генерацию какого-либо кода в этом отношении: сегодня запуск «скомпилированной» программы практически запускает ее на виртуальной машине Matlab, называемой MCR - которая охватывает почти все matlab функциональность. Это массивный - установщик MCR (установщик!) Весил 130M в прошлый раз, когда я проверял.
Некоторые дебаты по этому поводу все еще можно найти в новостных группах, но это сейчас не важно. На самом деле подход MCR кажется ближе к тому, что вы ищете.

И, кстати, для меня matlab -nosplash -nodesktop отлично работает на Windows - он запускает Matlab в качестве консоли, но это лишило бы вас обоих текстового редактора и отладчика ...

2 голосов
/ 13 апреля 2009

Что бы я сделал, это:

  1. Запустить MATLAB
  2. Не открывать файл .m внутри matlab
  3. Откройте файл в выбранном вами редакторе
  4. Запустите функцию из MATLAB как обычно

Я не могу представить причину, по которой это не сработает, поскольку MATLAB не должно волновать, что использовалось для редактирования файла.

Это не даст вам "оболочку", но весь GUI, но я не могу придумать причину, почему вы не захотите иметь это, если она доступна.

0 голосов
/ 01 июня 2012

Есть случаи, когда действительно не требуется много отладки, и состояние Matlab должно сохраняться между вызовами. Одним (единственным?) Примером будет Emacs org-mode . его можно использовать для написания текста, чередующегося с кодом в соответствии с грамотным программированием и т. д. . Хотя можно использовать комментарии в Matlab и публиковать код , будь то HTML или LaTeX, тем не менее, требуется оставить комфорт Emacs.

Существует отдельная доступная программа , которая использует движок Matlab для оценки команд, полученных на stdin, и вывода результата. Однако в этой конкретной версии отсутствует поддержка многострочных команд, таких как if / else / end или for / end. Это ограничение engEvalString , которое ожидает все сразу. Существует уродливый обходной путь , который делает его пригодным для использования достаточно для режима org.

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

#+RESULTS:
: wow!!!
0 голосов
/ 10 июня 2009

У меня была такая же проблема, как и у Kigurai. Мне нужно было управлять Matlab с помощью Python, поэтому я нашел это решение:

В Python:

import os

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

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

В monscript.bat:

matlab.exe -r interp_3D  -nodesktop –nosplash
0 голосов
/ 11 апреля 2009

В средах Linux Matlab можно запустить в текстовом режиме

matlab -nosplash -nodesktop 

, но это не работает в Windows. , которая запускает его в текущей оболочке. В Windows это открывает новое текстовое окно. Я не знаю, как заставить его работать внутри текущей консоли в Windows.

Возможно, вы можете подключиться к нему, запустив его в 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=chrome&ie=UTF-8&q=matlab+command+line+windows'>automation режиме сервера.

Еще один вариант, если вы действительно в отчаянии, может состоять в создании виртуальной машины и установке в нее linux. Затем я представляю, что есть способы настроить vim для приятной работы с Matlab (сейчас я emacs, и есть решения для emacs).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...