Вызов функций изнутри (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