Ho cercato un intero pomeriggio e non ho trovato alcuna soluzione per chiamare in MATLAB una funzione specificandone il percorso e non aggiungendo la sua directory al percorso.Chiama una funzione che non si trova nel percorso Matlab SENZA AGGIUNGERE QUESTO PERCORSO
Questa domanda è molto simile a Is it possible to call a function that is not in the path in MATLAB?, ma nel mio caso, non voglio chiamare una funzione built-in, ma solo una funzione normale come definito in un m-file.
Penso maniglie potrebbe essere una soluzione (perché a quanto pare si può fare riferimento a funzioni non sulla strada), ma ancora una volta ho trovato alcun modo per creare una maniglia, senza cd
-ing alla directory, creando lì e la cd
- indietro. Cercando di "esplorare" cosa sia una funzione che gestisce l'oggetto e come crearne uno con un riferimento a una funzione specifica non sul percorso non mi ha portato da nessuna parte.
Quindi la soluzione potrebbe venire da due angoli:
1) Si sa come creare un handle per un m-file in una directory specifica.
2) Si conosce un modo per chiamare una funzione non sul percorso MATLAB.
MODIFICA: ho appena scoperto la funzione functions(myhandle)
che in realtà consente di visualizzare il percorso file a cui si riferisce l'handle. Ma non c'è ancora modo di modificarlo ...
FWIW, il comando 'feval', che è il posto più naturale per questa funzionalità, esclude specificatamente la specifica della directory. "Il parametro' fname' deve essere un semplice nome di funzione, non può contenere informazioni sul percorso. " –
Proprio come un interesse generale: ti ricordi * perché * non volevi mettere la directory sul tuo percorso? –
@RodyOldenhuis In azienda lavoro, lavoriamo con diversi utenti sullo stesso server con RDP con un instal matlab (quindi un matlabrc, un percorso, ecc.) Gli utenti non sono generalmente attenti con il percorso e lo macellano costantemente. Molti utenti chiamano le loro funzioni in modo errato e ombreggiano a volte anche le funzioni MATLAB di base, quindi aggiungono la loro cartella al percorso. Vedo codice dappertutto con 'removepath (...); function(); addpath (...)' e simili ... Si interrompe se 2 utenti lo fanno allo stesso tempo. Quindi la soluzione più semplice sarebbe quella di poter chiamare direttamente una funzione specifica senza preoccuparsi del percorso –