MATLAB: вызов файла M из другого файла M - PullRequest
0 голосов
/ 30 ноября 2011

Извините, это такой базовый вопрос, но я не могу найти прямой ответ, и на него, кажется, здесь не было ответа раньше (возможно, потому что он такой простой?!)

Iпытаюсь вызвать функцию М из другого файла МФункция, которую я вызываю, является основной и не имеет входов или выходов: это просто несколько строк кода, которые я хотел бы много раз вставить в мой основной M-файл.

Функция называется

function generateGrating

и находится в файле generateGrating.m.Основная функция называется

function project

и находится в файле project.m.Как вы можете видеть, здесь нет ни ввода, ни вывода.Они просто запускают свои подпрограммы.

Я попытался вызвать эту функцию, но безуспешно:

generateGrating()
generateGrating
generateGrating.m()
generateGrating.m
generateGrating();
generateGrating;
generateGrating.m();
generateGrating.m;

Любая помощь будет признательна!Кажется, что ответ должен быть настолько простым, что я нигде не могу его найти: (

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Это должно быть просто generateGrating.Файлы generateGrating.m и project.m должны находиться в каталогах, которые включены в путь Matlab.Самый простой способ сделать это - разместить их в одном каталоге и использовать с этим каталогом в качестве рабочего каталога.Самое простое, что нужно сделать, это открыть project.m и нажать F5, чтобы запустить его, и нажать кнопку «Изменить каталог», если он появится.

ПРИМЕЧАНИЕ

Если generateGrating заполняет некоторые переменные (похоже, это то, что вы делаете), тогда НЕ делайте generateGrating a function.В противном случае любые переменные, которые установлены в generateGrating.m, будут находиться только в области действия этой функции.Например:

% generateGrating.m
function generateGrating()
x = 42;

% project.m
x = 1;
generateGrating
disp(x)

будет отображать x = 1, потому что в области действия функции generateGrating значение x составляет всего 42.Но при изменении generateGrating.m на

% generateGrating.m
x = 42;

И при запуске project снова появится x = 42;

1 голос
/ 30 ноября 2011

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

Скрипт - это файл .m без ключевого слова function в начале.

Так, например, у меня есть два файла:

sub.m:

b=b+1;

main.m:

function main
  b=1;
  b
  sub;
  b
  sub;
  b

Я получаюответ:

b=1
b=2
b=3

Если я изменю sub.m, чтобы сделать его функцией:

sub.m:

function sub
  b=b+1;

Переменная b внутри sub теперьиз другой объем , чем b в main.m Так что я получаю ответ:

b=1
b=1
b=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...