2015-05-27 1 views
2

Я кое-что посмотрел, нашел несколько ответов, но ни одного довольно ясного или определенного.Можно ли определить локальные функции в скриптах в MatLab?

Мне просто интересно, можно ли определять функции MatLab внутри скриптов (m-file)?

Потому что иногда мне просто нужна небольшая функция, которую я не буду использовать для каких-либо других скриптов, поэтому я не хочу создавать для нее новый файл. для удобства обращения с ними.

ответ

7

В скрипте можно определить только anonymous functions. Эти функции ограничены одним утверждением. Например:

f = @(x,y) max(x,y).^2; 

f является function handle, который используется для вызова, или обратиться к этой функции,:

>> x = [1 2]; 
>> y = [3 0]; 
>> f(x,y) 
ans = 
    9  4 
+0

О, это позор. все же, если это лучший матлаб, который может предложить в этом отношении, я ценю ответ! –

+1

В любом случае, создание функционального файла в той же папке, что и ваш скрипт, не так громоздко, не так ли? –

+1

@ LuisMendo, иногда это так. ;-) У меня есть папка, полная m-файлов, которые я написал, отвечая на вопросы о SO, обычно называемые в честь человека, задающего вопрос. Во многих случаях я хотел бы определить функции для вызова в скрипте, но распределение * одного * ответа на несколько файлов делает папку полной беспорядком. –

1

Возможно, вы имели в виду nested functions?

Пример из Matlab:

function parent 
disp('This is the parent function') 
nestedfx 

    function nestedfx 
     disp('This is the nested function') 
    end 

end 
+0

Я не Мена функции внутри функции, а скорее функция определенных в скрипте. Как в середине вашего кода, в файле, который не является файлом определения функции. –

+1

о, я вижу. Тогда, кажется, анонимные функции, так как ответ Луиса - лучший подход. – scmg

Смежные вопросы