Подтвердить что ты не робот

Поддерживаются ли декларации в MATLAB?

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

4b9b3361

Ответ 1

Конечно.

В таком m файле локальные функции будут объявлены после основной функции. Например:

function y = main_func(x)
% # This is the main function
y = helper_func1(x) .* helper_func2(x);  % # Just an example

function h1 = helper_func1(x)
% # This is a helper function #1
h1 = x + 2;                              % # Just an example

function h2 = helper_func2(x)
% # This is a helper function #2
h2 = x * 2;                              % # Just an example

В этом примере main_func может без проблем вызвать helper_func1 и helper_func2. Вы можете протестировать его и убедиться сами:

   >> main_func(8)

   ans =        
       160

Нет необходимости в форвардной декларации.

Кстати, много m файлов, которые поставляются с MATLAB, реализованы таким образом. Например, corrcoef. С помощью type corrcoef вы можете видеть это.

Примечание. Локальные определения функций не разрешены в приглашении или в скриптах, поэтому вам необходимо объявить "основную" функцию в вашем файле m. В качестве упражнения скопируйте мой пример в новый m файл, удалите объявление main_func (только первая строка) и посмотрите, что произойдет.