2013-04-10 2 views
1

Я хотел бы иметь файл с функцией И с небольшим количеством кода, который вызывает эту функцию, например:Как поместить функцию и ее вызов в один файл?

function foo() 
    ... 
end 

foo() 

Я хотел бы сохранить такой код в файл (один файл) с именем «everything.m», а затем введите «все» в консоли Matlab/Octave, моя функция foo будет определена и вызвана.

+1

Что случилось с двумя файлами? Или вы хотите иметь много функций в одном файле? – Dan

+2

Дэн прав, вы можете сохранить несколько функций в одном файле. Но помните, что вы не можете смешивать скрипты и функции. Поэтому в вашем случае, чтобы вызвать foo(), вам, вероятно, нужно написать другую функцию, иначе компилятор matlab будет жаловаться. – entropiece

+0

@Dan, я хочу иметь много функций в одном файле и позвонить одному из них. – greenoldman

ответ

1

В Matlab вы не можете смешивать скрипты и функции. Поэтому в вашем случае, чтобы вызвать foo(), вам нужно написать другую функцию, иначе компилятор matlab будет жаловаться.

Так everything.m должны иметь функцию с именем everything, где вы можете позвонить foo() из

Существует аналогичный вопрос здесь

MATLAB script code and function code in the same file?

0

Я думаю, что вы можете написать код в сценарии, а затем сохранить его с тем же именем функции. Например, если ваша функция foo, чем при сохранении файла, его имя должно быть: foo.m. Эта функция вызывает вызов foo из командной строки. Если вы хотите вызывать функцию только без входных аргументов, вы должны определить все переменные, которые вам нужны между ключевыми словами «функция» и «конец». Также вы можете вызвать функцию успешно только в том случае, если ваша текущая папка является той, где вы сохранили функцию. Если вы вызовете эту функцию из другого каталога, вы получите сообщение об ошибке. Чтобы заставить функцию работать «глобально», вы должны добавить ее в «путь Matlab». Надеюсь, вам это поможет.

2

Распространенный способ сделать такую ​​вещь, что скрипт называется everything.m

% everything.m 
foo(); 

и один файл для каждой функции, которую вы хотите, чтобы иметь возможность использовать:

% foo.m 
function foo() 
    ... 
end 

Выполнение everything.m затем вызывает все функции, которые вы хотите вызвать (плюс любые дополнительные задачи, которые вы, возможно, захотите сделать на этом этапе).

Имея все ваши функции на пути Matlab, означает, что они «определены» (доступны из командной строки Matlab или внутри других функций). Это «Matlab путь» :)

Обратите внимание, что возможно иметь более чем одну функцию на каждый файл,

% bar.m 

function bar() 
    otherFunction(); % WORKS OK 
end 

function otherFunction() 
    ... 
end 

только самая верхняя функция будет отображаться в командной строке Matlab:

>> bar 
>> % no error 
>> 
>> otherFunction 
??? Undefined function or variable 'otherFunction'.