2013-05-27 2 views
1

Я пытаюсь написать простую функцию, например:Функция и функциональные ошибки имени

function [x y] = functionname (a, b, c, d, e) 

так я создаю м-файл с именем function-name.m, с указанным всеми переменными. Тем не менее, m-файл, из которого я звоню functionname, не любит имя и настаивает на том, что он называет его фактическим именем m-файла (i.e, я получаю ошибку not enough input arguments).

Как мне обойти это?

ответ

2

Вы не можете обойти его. В MATLAB вы должны назвать файл именем функции. Любые функции в этом файле, имеющие другое имя, являются закрытыми (не видимыми для какого-либо кода, кроме кода внутри этого m-файла).

2

В MATLAB documentation говорится, что имя файла и функции должны быть идентичными:

Сохраните код функции в текстовом файле с расширением .m. Имя файла должно совпадать с именем первой функции в файле. Действительные имена функций начинаются с буквенного символа и могут содержать буквы, цифры или символы подчеркивания.

Однако, что на самом деле имеет значение на практике является имя файла, а не имя главной функции, объявленной в этом файле. Например, если ваш файл имеет имя func.m, но функция внутри определена function functionname(...), вам необходимо вызвать ее как func(), а не functionname(). Попробуй!

В вашем случае это еще хуже, потому что имя файла «function-name.m», поэтому оно содержит дефис. В именах функций не допускаются дефисы (MATLAB интерпретирует их как знаки минус), поэтому вы в основном застреваете с функцией, которую вы не можете вызвать.

Суть в том, что если вы не хотите проблем, сделайте так, как хочет MATLAB, и сохраните файл и функцию с именем одинаково.

+0

Благодарим вас обоих - однако я все еще не могу заставить его работать! @Eitan, я сохранил функцию с тем же именем, что и фактический файл, который несет функцию (с .m, но как текстовый файл и без дефиса, как вы предположили). Теперь редактор Matlab любит это (и показывает все в Green). Однако, когда я его запускаю, я все равно получаю ту же ошибку msg «Недостаточно входных аргументов». Существуют ли какие-либо правила или «незавершенные», которые мне нужно соблюдать, когда я определяю функцию в текстовом файле? Благодарю вас. – user2423335

+0

Вы пытаетесь запустить его, нажав F5 из редактора m-файлов? Если да, это неправильно. Вам нужно вызвать функцию извне (например, из командной строки) со всеми необходимыми входными параметрами. В вашем примере вам нужно передать 5 входных параметров в вашу функцию. –

+1

Благодарим за отзыв. Да, я запускал его, нажимая F5, что было неправильно, но также была проблема с папкой (в результате функция была как-то сохранена в том месте, которое Matlab не узнал). Исправляя их, моя функция работает сейчас. Спасибо! – user2423335

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