Matlab Попытка выполнить скрипт как функцию - PullRequest
0 голосов
/ 22 марта 2012

У меня есть скрипт Matlab, давайте назовем его «master.m», который загружает файл с именем «config.m». config.m содержит все переменные, используемые в master.m, так что они могут быть легко изменены без редактирования какого-либо кода. Проблема в том, что я пытаюсь получить основную функцию в master.m для загрузки config.m на основе пользовательского ввода. Поэтому в основном я хочу, чтобы пользователь мог указать имя файла для загрузки. Например, если config.m был назван testing.m, тогда пользователь мог бы напечатать в приглашении matlab:

>> master(testing.m)

и загрузит файл. НО я не могу понять, как это сделать правильно, я изучил функцию eval, но она выдает ошибку. Вот код, который у меня есть на данный момент в master.m:

function [X,Y] = master(file)
eval(file)

Однако, когда я запускаю в приглашении Matlab:

>> master(config.m)  
??? Attempt to execute SCRIPT config as a function:
/home/myusername/config.m

Я также пытался master('config.m'), master('./config.m'), master(config) и master(config.m) но безрезультатно

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

Я думаю, что вы хотите:

master('config');
3 голосов
/ 22 марта 2012

У тебя почти было это! Заключение имени файла в одинарные кавычки и удаление .m должно помочь. Следующее работает для меня на Matlab R2011b (Linux) с файлами master.m и config.m в одной папке.

master.m:

function X = master( filename )
eval(filename);
X = a^2;
end

config.m:

a = 2;
disp('Testing config.m');

В консоли:

>> master('config')
Testing config.m
ans =
     4
...