/ / Załaduj plik w formacie matlab do lokalizacji skryptu - matlab

Załaduj plik w matlab ralative do lokalizacji skryptu - matlab

Mam prosty skrypt w Matlabie i chcę załadować plik. Wygląda na to, że działa tylko wtedy, gdy plik jest w tym samym katalogu co skrypt. Jeśli dodam plik do katalogu, nie odczytuje go.

Na przykład:

fileID = fopen("myfile","r" ,"n", "US-ASCII");

ale kiedy to położę myfile w files:

fileID = fopen("files/myfile","r" ,"n", "US-ASCII");

lub

fileID = fopen("./files/myfile","r" ,"n", "US-ASCII");

Otrzymuję -1 jako identyfikator pliku. Nie można odczytać pliku.

Odpowiedzi:

1 dla odpowiedzi № 1

Zgodnie z komentarzami dzieje się tak, ponieważnajprawdopodobniej do ścieżki MATLAB dodano ścieżkę lokalizacji skryptu, ale do ścieżki nie dodano podkatalogu, w którym znajdował się plik. Dlatego nie może znaleźć pliku. Dlatego, aby uniknąć tego w przyszłości, musisz fizycznie zmienić katalog (tj. Katalog roboczy) miejsca, w którym aktualnie pracuje MATLAB, w którym przechowywany jest twój skrypt.

To wtedy powinno działać odniesienie lokalne. Możesz to zrobić, używając albo cd funkcja, przechodząc na górę okna MATLABgdzie widzisz listę katalogów, klikając strzałkę po prawej i pociągając menu rozwijane, aby zmienić katalog, wpisując żądany katalog, klikając dowolne puste miejsce na liście katalogów, aby włączyć pole tekstowe:

wprowadź opis obrazu tutaj

... lub jeśli używasz kodu w edytorze MATLAB, zażądasz zmiany katalogów, ponieważ skrypt, który próbujesz uruchomić, nie znajduje się obecnie w katalogu roboczym.


0 dla odpowiedzi nr 2

Możesz także programowo dodać podfoldery w swoim katalogu skryptów, używając mfilename, fileparts, genpath i addpath:

[dir, ~, ~] = fileparts(mfilename("fullpath")); % locate your script directory
addpath(genpath(fullfile(dir))); % add the folder and all subfolders to Matlab search directory

% then load your file.
fileID = fopen("myfile","r" ,"n", "US-ASCII")

Jeśli ważne jest również, aby wszystkie wyjścia były umieszczone w tym samym katalogu co plik skryptu, możesz cd do twojego katalogu skryptów:

cd(dir)