(с Matlab 2018b под последней версией Windows10.) У меня есть папка Folder
, содержащая DoStuff.m
с кодом:
%addpath('./SubFolder/SubSubFolder'); // SubSubFolder contains mex file defining myFunction used below
%close all;
function [res] = DoStuff(param) % Function has same name as the script defining it
res = myFunction(param)
end
, где myFunction
определяется в файле mexw64
, содержащемся в './SubFolder/SubSubFolder'
.
Естественно, что при выполнении функции DoStuff (param) в графическом интерфейсе Matlab (в папке Folder
) выдается следующая ошибка:
'myFunction' is not found in the current folder or on the MATLAB path, but exists in ...
... в './SubFolder/SubSubFolder'
. Superb. Поэтому я удаляю %
в первой строке DoStuff.m
и повторно выполняю функцию DoStuff (param) внутри GUI Matlab (в папке Folder
) и получаю следующую ошибку:
Function with duplicate name "DoStuff" cannot be defined.
Странно, поскольку DoStuff
определяется только в одном месте: используется сценарий DoStuff.m
. (Подтверждено which -all DoStuff
в Matlab в Folder
.)
Замечание. В Matlab2018b один может определил функцию с именем toto
внутри скрипта с именем toto.m
, Matlab не будет иметь никаких проблем с этим. Так что моя проблема не имеет ничего общего с тем же наименованием. Это связано с добавлением строки addpath
, но я не знаю как. Подтверждение этого ощущения: замена строки res = myFunction(param)
на res = 1
и раскомментирование addpath также приводит к ошибке именования.