Как мога да стартирам matlab m файл с аргументи и да обработвам този аргумент в m файл?

Как мога да стартирам matlab m файл с аргументи?
Мога да стартирам същия код в октава с аргументи, но не можах да намеря съответния код в matlab. След като стартирам m файла на командния ред с аргументи, трябва да обработя този аргумент в m файла. Ето съответния октавен код, който работи перфектно:

#! /usr/bin/octave -qf

argList = argv();

Ето командата, която изпълнява перфектно горния m файл:

./solver.m this_is_argument_of_m_file

Какви са съответните кодове на matlab?

Актуализация: Под команден ред имам предвид командния ред на операционната система (терминал, windows cmd), а не командния ред на matlab.


person Celik    schedule 16.12.2014    source източник
comment
matlab -nosplash -nodesktop -r solver.m 'arg1 (низ)'; изход   -  person Mahdi    schedule 03.01.2016


Отговори (2)


Трябва да знаете, че има разлика между скриптове и функции. Mathworks посвети част от документацията на това разлика.

Скриптът не приема входни аргументи, функциите могат, но не е необходимо. Можете да разпознаете функция, тъй като първият функционален код в m-файла е function. Една функция използва свое собствено работно пространство, а скриптът използва основното работно пространство на matlab.

Например:

function out = fcn_name(in1, in2, varargin)

Освен това можете да програмирате с помощта на OO в matlab, но мисля, че трябва да започнете да четете връзката по-горе.

За команда за стартиране, моля, проверете тази част от документацията. Може да искате да използвате опцията -r.

person Nick    schedule 16.12.2014
comment
Добре, разбрах тази част, благодаря. Сега искам да коригирам въпроса си. Под команден ред имам предвид командния ред на операционната система (терминал, windows cmd), а не командния ред на matlab. Благодаря отново. - person Celik; 16.12.2014

В подканата на Windows cmd можете да го стартирате, както следва:

"C:\PATH_TO_MATLAB\matlab.exe" -nosplash -nodisplay -nodesktop -r "run('C:\PATH_TO_M-FILE\mfile.m');"

Това ще остави matlab работещ; след това може да се затвори с помощта на командата exit.

Същият подход може да се използва за Linux:

./PATH_TO_MATLAB/matlab -nosplash -nodisplay -nodesktop -r < /PATH_TO_M-FILE/mfile.m

Някои версии на matlab изглежда възразяват срещу частта „.m“ там - ако изведе грешка, опитайте да премахнете разширението...

В отговор на коментара ви, само за Linux (нямам инсталация на Windows, за да го изпробвам), това може да се постигне най-добре, ако конфигурирате системата си така, че да можете да стартирате matlab просто като напишете matlab във вашия терминал. Можете да настроите това, като създадете символна връзка (sudo ln -s PATH_TO_MATLAB_EXECUTABLE /usr/bin/). След това стартирайте в терминала:

cd PATH_TO_FUNCTION_YOU_WANT && matlab -nosplash -nodisplay -nodesktop -r 'mfile(args)'

Уверете се, че не включвате .m, всичко в кавичките се предава направо на matlab. Можете да включите повече от една функция, ако ги разделите с точка и запетая. Нямам представа как работи предаването на низове като аргументи...

person srthompers    schedule 16.12.2014
comment
Къде е параметърът аргумент на тази команда? Току-що стартирахте m файла. Няма спор. Това не е, което търся. - person Celik; 16.12.2014
comment
@ Celik Актуализирах решението, за да отчета това - не бях разбрал напълно въпроса ви. - person srthompers; 17.12.2014