MATLAB Answers

error with changing directory in for loop

1 ビュー (過去 30 日間)
Vincent Davis
Vincent Davis 2019 年 7 月 16 日
Edited: Walter Roberson 2019 年 7 月 16 日
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?

  0 件のコメント

サインイン to comment.

採用された回答

Adam Danz
Adam Danz 2019 年 7 月 16 日
Do not use cd(); use fullfile() instead and then feed in the full path of the file to dlmwrite().

  1 件のコメント

Steven Lord
Steven Lord 2019 年 7 月 16 日
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.

サインイン to comment.

More Answers (0)

サインイン してこの質問に回答します。


Translated by