error with changing directory in for loop

4 visualizzazioni (ultimi 30 giorni)
I'm having a problem with "cd" when looping through folders using an SSH (Putty). Here is the relevant part of my function:
for ii = 1:10
parfor i=1:size(xmat,1)
file = sprintf('res_%d',i);
x0 = xmat(i,:);
[t,Y] = hackathon_ode(x0);
myFolder = cd(['output/mat_npaths_1000/np_10000_binsz_0.01/' int2str(ii) '/']);
dlmwrite(file, [t Y], ' ')
x1 = xmat1(i,:);
[t,Y] = hackathon_ode(x1);
myFolder = cd(['output/mat_npaths_1000/np_10000_binsz_0.1/' int2str(ii) '/']);
dlmwrite(file, [t Y], ' ')
And I get this as an output:
cannot CD to
/output/mat_npaths_1000/np_10000_binsz_0.1/1/output/mat_npaths_1000/np_10000_binsz_0.1/1
(Name is nonexistent or not a directory).
This is what it should look like:
/output/mat_npaths_1000/np_10000_binsz_0.1/1
When I run this from my computer it works fine. Can anyone see what I'm missing and why it repeats the directory on Putty?

Risposta accettata

Adam Danz
Adam Danz il 16 Lug 2019
Do not use cd(); use fullfile() instead and then feed in the full path of the file to dlmwrite().
  1 Commento
Steven Lord
Steven Lord il 16 Lug 2019
I agree with Adam Danz's suggestion. As an explanation for what's happening: you cd into a directory but then never return to the directory you were in before the cd call. Therefore when you cd a second time, you're changing to a directory relative to where you were after your first cd.
Or to use a whimsical example: you're doing the Hokey Pokey by putting your right foot in then trying to put your right foot in again. You skipped the "put your right foot out" step inbetween.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Search Path in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by