Szukałem przez całe popołudnie i nie znalazłem żadnego rozwiązania, aby wywołać w Matlab funkcję, określając jej ścieżkę i nie dodając jej katalogu do ścieżki.Wywołanie funkcji, która nie znajduje się na ścieżce Matlaba BEZ DODAWANIA TEGO PATH
To pytanie jest bardzo podobne do Is it possible to call a function that is not in the path in MATLAB?, ale w moim przypadku nie chcę wywoływać funkcji wbudowanej, ale zwykłą funkcję zdefiniowaną w pliku m.
myślę uchwyty mogą być rozwiązaniem (bo podobno mogą odnosić się do funkcji nie na drodze), ale znowu nie znalazła sposób, aby utworzyć uchwyt bez cd
-ing do katalogu, tworząc go tam i cd
- z powrotem. Próba "zbadania", czym jest obiekt funkcji funkcji i jak go utworzyć z odniesieniem do określonej funkcji, która nie znajduje się na ścieżce, doprowadziła mnie do nikąd.
Rozwiązanie może więc pochodzić z dwóch perspektyw:
1) Wiesz, jak utworzyć uchwyt dla pliku m w określonym katalogu.
2) Znasz sposób wywołania funkcji spoza ścieżki MATLAB.
EDYCJA: Właśnie odkryłem funkcję functions(myhandle)
, która faktycznie pozwala zobaczyć ścieżkę do pliku, do którego odnosi się uchwyt. Ale nadal nie można go zmodyfikować ...
FWIW, polecenie 'feval', które jest najbardziej naturalnym miejscem dla tej możliwości, wyraźnie wyklucza określenie katalogu. "Parametr' fname' musi być prostą nazwą funkcji, nie może zawierać informacji o ścieżce. " –
Tak samo jak w ogólnym interesie: czy pamiętasz * dlaczego * nie chcesz umieścić katalogu na swojej ścieżce? –
@RodyOldenhuis W firmie, w której pracuję, pracujemy z kilkoma użytkownikami na tym samym serwerze z RDP z jednym programem matlab instal (a więc jeden matlabrc, jedna ścieżka itd.) Użytkownicy zazwyczaj nie są ostrożni ze ścieżką i ciągle ją rzeźnią. Wielu użytkowników nieprawidłowo nadaje nazwy swoim funkcjom, a shadow czasami nawet funkcje core matlab, a następnie dodaje ich folder do ścieżki. Widzę kod wszędzie za pomocą 'removepath (...); function(); addpath (...)' i tym podobne ... Dzieje się to, gdy 2 użytkowników robi to w tym samym czasie. Tak więc najprostszym rozwiązaniem byłoby móc wywołać konkretną funkcję bezpośrednio, nie martwiąc się o ścieżkę –