Вызов функций изнутри (Matlab) фрагментов кода

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

Таким образом, кажется, что Matlab (2016b) не принимает функции, которые должны быть определены в разделах кода, или я делаю что-то еще, что неправильно.

Что я пробовал:

  • определить весь скрипт как функцию, названную точно как имя содержащего.m файла, и с соответствующим "концом" в самой последней строке

  • определить функцию, содержащую мой повторяющийся код, либо в конце раздела кода, для которого она актуальна

  • .. или в конце файла (перед собственным концом самой верхней функции)

  • .. или в конце файла (после собственного "конца" самой верхней функции)

Моя организация кода может быть подвергнута критике, например, я могу вместо этого использовать несколько функций в моем файле, а не разделы кода в стиле сценария. Тем не менее, я хотел бы знать, есть ли способ вызывать функции из разделов кода.

1 ответ

Вам необходимо прочитать следующую документацию:

Примечательно, что второй содержит соответствующую информацию:

Начиная с R2016b, другой вариант хранения функций - включить их в конец файла сценария.

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

x = 3;
y = 2;
z = perm(x,y)

function p = perm(n,r)
    p = fact(n)*fact(n-r);
end

function f = fact(n)
    f = prod(1:n);
end
Другие вопросы по тегам