MATLAB wyszukuje pliki m na swojej ścieżce wyszukiwania, możesz je wyświetlić za pomocą polecenia path
. Jeśli masz wiele plików m o tej samej nazwie (tj. Część nazwy pliku przed rozszerzeniem, z wyłączeniem katalogów) na ścieżce MATLAB, wówczas MATLAB może wykonać tylko ten, który jest pierwszy na ścieżce.
Można użyć funkcji addpath
i rmpath
, aby dynamicznie modyfikować ścieżkę. Na przykład możesz automatycznie dodać odpowiednie katalogi automatycznie w swoim uruchomionym skrypcie testowym. Zauważ, że addpath
dodaje nową ścieżkę do nagłówka listy ścieżek, co zapewnia, że ma pierwszeństwo przed istniejącymi wpisami.
Innym sposobem zapobiegania takim konfliktom nazw jest packages.
EDIT: Aby przekonwertować katalogu w pakiecie, wykonaj następujące czynności:
- Dodaj
+
na początku nazwy.
- Upewnij się, że rodzic katalogu jest na ścieżce MATLAB.
- Zaktualizuj wszystkie połączenia do funkcji w pakiecie, wysyłając do nich
packagename.
lub włączając zawartość pakietu przed połączeniami (import packagename.*
).
Ogólnie wolę pakiety od dynamicznych modyfikacji ścieżek, ponieważ są one łatwiejsze w użyciu. Zauważ, że możesz zagnieździć pakiety (tj. my_matlab_files/+mypkg/+nested/foo.m
).
Sprawdź [to] (http://www.mathworks.se/matlabcentral/newsreader/view_thread/254911) i [to] (http://compgroups.net/comp.soft-sys.matlab/files- shadowing-theselves -case-of-direc/866751) dyskusja. Napotkałem również ten błąd, ale nie pamiętam, co zrobiłem, aby go rozwiązać. Może możesz programowo zmienić ścieżkę wewnątrz kodu. Lub sprawdź, w którym katalogu plik jest uruchomiony, wpisując 'który' –
Jeśli chodzi o aktualizację: Komunikat o błędzie dotyczy nazw skryptów testowych, które wydają się być takie same. To jest coś, co musisz najpierw naprawić.Następnie musisz sprawdzić, czy twój schemat nazewnictwa dla jądra wprowadza podobne problemy. –