Как я могу запустить m-файл Matlab с аргументами и обработать этот аргумент в m-файле?

Как я могу запустить m-файл Matlab с аргументами?
Я могу запустить тот же код в октаве с аргументами, но не смог найти соответствующий код в 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 вы можете запустить его следующим образом:

"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