Add folder path based on run script matlab
Don't know why this isn't working anymore. Very simple. I have a script with a folder in the same path. The folder contains a series of m files for the script to work.
Originally I simply would use
addpath('.../utilities/);
when the script was first run. but recently I started receiving this error
Warning: Name is nonexistent or not a directory: ...utilities
In path (line 109)
In addpath (line 88)
In Myrunningcode (line 101)
and I don't know why.
I fixed the problem by running the following code
p = mfilename('fullpath');
[filepath,~,~] = fileparts(p);
addpath([filepath,'/utilities/']);
At least I would like to know why this error occurred.
Here is my directory setup. I use windows 10 and matlab 2016a.
matlab path relative-path
add a comment |
Don't know why this isn't working anymore. Very simple. I have a script with a folder in the same path. The folder contains a series of m files for the script to work.
Originally I simply would use
addpath('.../utilities/);
when the script was first run. but recently I started receiving this error
Warning: Name is nonexistent or not a directory: ...utilities
In path (line 109)
In addpath (line 88)
In Myrunningcode (line 101)
and I don't know why.
I fixed the problem by running the following code
p = mfilename('fullpath');
[filepath,~,~] = fileparts(p);
addpath([filepath,'/utilities/']);
At least I would like to know why this error occurred.
Here is my directory setup. I use windows 10 and matlab 2016a.
matlab path relative-path
What changed? OS? MATLAB version?
– Ander Biguri
Nov 14 '18 at 9:59
nothing changed from what I can tell. I'm using matlab 2016a on windows 10.
– Hojo.Timberwolf
Nov 14 '18 at 10:02
1
Usefullfile
instead of manually concatenating with (OS dependent) file separators. If your error is a direct copy of the actual error, it would appear you've used a backslash where your example cites a forward slash, this inconsistency is a red flag. The issue is likely that your current directory (pwd
) is not the same as the file location (perhaps it was when your code worked) - the relative directory isn't relative to the current script, it's relative topwd
, hence why themfilename
workaround fixes your issue.
– Wolfie
Nov 14 '18 at 10:07
Is there a simpler method to adding a folder based on script location or is my workaround good enough for what I am doing? As a side question, Is it possible to know if a folder path was added to the list? I don't think it is wise to calladdpath
every time I run the script.
– Hojo.Timberwolf
Nov 14 '18 at 10:13
@Wolfie no, I use this in both linux and windows. in Windows, if you doaddpath('.../utilities/);
you will get a warning using...utilities
, as it knows you mean that. Using/
will make the code OS-independent.
– Ander Biguri
Nov 14 '18 at 10:16
add a comment |
Don't know why this isn't working anymore. Very simple. I have a script with a folder in the same path. The folder contains a series of m files for the script to work.
Originally I simply would use
addpath('.../utilities/);
when the script was first run. but recently I started receiving this error
Warning: Name is nonexistent or not a directory: ...utilities
In path (line 109)
In addpath (line 88)
In Myrunningcode (line 101)
and I don't know why.
I fixed the problem by running the following code
p = mfilename('fullpath');
[filepath,~,~] = fileparts(p);
addpath([filepath,'/utilities/']);
At least I would like to know why this error occurred.
Here is my directory setup. I use windows 10 and matlab 2016a.
matlab path relative-path
Don't know why this isn't working anymore. Very simple. I have a script with a folder in the same path. The folder contains a series of m files for the script to work.
Originally I simply would use
addpath('.../utilities/);
when the script was first run. but recently I started receiving this error
Warning: Name is nonexistent or not a directory: ...utilities
In path (line 109)
In addpath (line 88)
In Myrunningcode (line 101)
and I don't know why.
I fixed the problem by running the following code
p = mfilename('fullpath');
[filepath,~,~] = fileparts(p);
addpath([filepath,'/utilities/']);
At least I would like to know why this error occurred.
Here is my directory setup. I use windows 10 and matlab 2016a.
matlab path relative-path
matlab path relative-path
edited Nov 14 '18 at 12:35
Wolfie
16.5k51745
16.5k51745
asked Nov 14 '18 at 9:49
Hojo.TimberwolfHojo.Timberwolf
398214
398214
What changed? OS? MATLAB version?
– Ander Biguri
Nov 14 '18 at 9:59
nothing changed from what I can tell. I'm using matlab 2016a on windows 10.
– Hojo.Timberwolf
Nov 14 '18 at 10:02
1
Usefullfile
instead of manually concatenating with (OS dependent) file separators. If your error is a direct copy of the actual error, it would appear you've used a backslash where your example cites a forward slash, this inconsistency is a red flag. The issue is likely that your current directory (pwd
) is not the same as the file location (perhaps it was when your code worked) - the relative directory isn't relative to the current script, it's relative topwd
, hence why themfilename
workaround fixes your issue.
– Wolfie
Nov 14 '18 at 10:07
Is there a simpler method to adding a folder based on script location or is my workaround good enough for what I am doing? As a side question, Is it possible to know if a folder path was added to the list? I don't think it is wise to calladdpath
every time I run the script.
– Hojo.Timberwolf
Nov 14 '18 at 10:13
@Wolfie no, I use this in both linux and windows. in Windows, if you doaddpath('.../utilities/);
you will get a warning using...utilities
, as it knows you mean that. Using/
will make the code OS-independent.
– Ander Biguri
Nov 14 '18 at 10:16
add a comment |
What changed? OS? MATLAB version?
– Ander Biguri
Nov 14 '18 at 9:59
nothing changed from what I can tell. I'm using matlab 2016a on windows 10.
– Hojo.Timberwolf
Nov 14 '18 at 10:02
1
Usefullfile
instead of manually concatenating with (OS dependent) file separators. If your error is a direct copy of the actual error, it would appear you've used a backslash where your example cites a forward slash, this inconsistency is a red flag. The issue is likely that your current directory (pwd
) is not the same as the file location (perhaps it was when your code worked) - the relative directory isn't relative to the current script, it's relative topwd
, hence why themfilename
workaround fixes your issue.
– Wolfie
Nov 14 '18 at 10:07
Is there a simpler method to adding a folder based on script location or is my workaround good enough for what I am doing? As a side question, Is it possible to know if a folder path was added to the list? I don't think it is wise to calladdpath
every time I run the script.
– Hojo.Timberwolf
Nov 14 '18 at 10:13
@Wolfie no, I use this in both linux and windows. in Windows, if you doaddpath('.../utilities/);
you will get a warning using...utilities
, as it knows you mean that. Using/
will make the code OS-independent.
– Ander Biguri
Nov 14 '18 at 10:16
What changed? OS? MATLAB version?
– Ander Biguri
Nov 14 '18 at 9:59
What changed? OS? MATLAB version?
– Ander Biguri
Nov 14 '18 at 9:59
nothing changed from what I can tell. I'm using matlab 2016a on windows 10.
– Hojo.Timberwolf
Nov 14 '18 at 10:02
nothing changed from what I can tell. I'm using matlab 2016a on windows 10.
– Hojo.Timberwolf
Nov 14 '18 at 10:02
1
1
Use
fullfile
instead of manually concatenating with (OS dependent) file separators. If your error is a direct copy of the actual error, it would appear you've used a backslash where your example cites a forward slash, this inconsistency is a red flag. The issue is likely that your current directory (pwd
) is not the same as the file location (perhaps it was when your code worked) - the relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.– Wolfie
Nov 14 '18 at 10:07
Use
fullfile
instead of manually concatenating with (OS dependent) file separators. If your error is a direct copy of the actual error, it would appear you've used a backslash where your example cites a forward slash, this inconsistency is a red flag. The issue is likely that your current directory (pwd
) is not the same as the file location (perhaps it was when your code worked) - the relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.– Wolfie
Nov 14 '18 at 10:07
Is there a simpler method to adding a folder based on script location or is my workaround good enough for what I am doing? As a side question, Is it possible to know if a folder path was added to the list? I don't think it is wise to call
addpath
every time I run the script.– Hojo.Timberwolf
Nov 14 '18 at 10:13
Is there a simpler method to adding a folder based on script location or is my workaround good enough for what I am doing? As a side question, Is it possible to know if a folder path was added to the list? I don't think it is wise to call
addpath
every time I run the script.– Hojo.Timberwolf
Nov 14 '18 at 10:13
@Wolfie no, I use this in both linux and windows. in Windows, if you do
addpath('.../utilities/);
you will get a warning using ...utilities
, as it knows you mean that. Using /
will make the code OS-independent.– Ander Biguri
Nov 14 '18 at 10:16
@Wolfie no, I use this in both linux and windows. in Windows, if you do
addpath('.../utilities/);
you will get a warning using ...utilities
, as it knows you mean that. Using /
will make the code OS-independent.– Ander Biguri
Nov 14 '18 at 10:16
add a comment |
2 Answers
2
active
oldest
votes
The issue is likely that your current directory (pwd
) is not the same as the file location. The relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.
The first solution is your own, but you can do it in one line:
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
Then the quickest way to check if your files are already on the path is using which
:
% Assuming that myFile.m is within the utilities folder, and not shadowed elsewhere.
% If utilities is on the path, which('myFile') will not be empty.
if isempty( which( 'myFile' ) )
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
end
Alternatively, you could pair the above check with a persistent
flag variable, so you don't have to repeat the check if you re-enter the function.
Note that addpath
isn't particularly slow, it's genpath
you want to avoid if you were to add a load of subdirectories too.
Aside: It's good to use fullfile
instead of manually concatenating with (OS dependent) file separators. Less room for error (e.g. double slashes) even if you're always using the same OS.
1
But as a note:addpath('./utilities/');
is OS independent. I agree with you with the timing ofaddpath
. Its probably better to just add it to path multiple times than to checkwhich
.
– Ander Biguri
Nov 14 '18 at 10:24
1
@AnderBiguri Not disputing that, I'm suggesting the use offullfile
to avoid the[filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.
– Wolfie
Nov 14 '18 at 10:27
1
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
add a comment |
The correct way to include a relative folder is:
addpath('./utilities/');
with a single dot.
This has worked (and works) since the existence of relative folders, AFAIK, so you should be able to use it without fear of deprecation
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
1
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above./utilities
though, as that is how a relative path is defined.
– Ander Biguri
Nov 14 '18 at 10:18
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53297233%2fadd-folder-path-based-on-run-script-matlab%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
The issue is likely that your current directory (pwd
) is not the same as the file location. The relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.
The first solution is your own, but you can do it in one line:
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
Then the quickest way to check if your files are already on the path is using which
:
% Assuming that myFile.m is within the utilities folder, and not shadowed elsewhere.
% If utilities is on the path, which('myFile') will not be empty.
if isempty( which( 'myFile' ) )
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
end
Alternatively, you could pair the above check with a persistent
flag variable, so you don't have to repeat the check if you re-enter the function.
Note that addpath
isn't particularly slow, it's genpath
you want to avoid if you were to add a load of subdirectories too.
Aside: It's good to use fullfile
instead of manually concatenating with (OS dependent) file separators. Less room for error (e.g. double slashes) even if you're always using the same OS.
1
But as a note:addpath('./utilities/');
is OS independent. I agree with you with the timing ofaddpath
. Its probably better to just add it to path multiple times than to checkwhich
.
– Ander Biguri
Nov 14 '18 at 10:24
1
@AnderBiguri Not disputing that, I'm suggesting the use offullfile
to avoid the[filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.
– Wolfie
Nov 14 '18 at 10:27
1
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
add a comment |
The issue is likely that your current directory (pwd
) is not the same as the file location. The relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.
The first solution is your own, but you can do it in one line:
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
Then the quickest way to check if your files are already on the path is using which
:
% Assuming that myFile.m is within the utilities folder, and not shadowed elsewhere.
% If utilities is on the path, which('myFile') will not be empty.
if isempty( which( 'myFile' ) )
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
end
Alternatively, you could pair the above check with a persistent
flag variable, so you don't have to repeat the check if you re-enter the function.
Note that addpath
isn't particularly slow, it's genpath
you want to avoid if you were to add a load of subdirectories too.
Aside: It's good to use fullfile
instead of manually concatenating with (OS dependent) file separators. Less room for error (e.g. double slashes) even if you're always using the same OS.
1
But as a note:addpath('./utilities/');
is OS independent. I agree with you with the timing ofaddpath
. Its probably better to just add it to path multiple times than to checkwhich
.
– Ander Biguri
Nov 14 '18 at 10:24
1
@AnderBiguri Not disputing that, I'm suggesting the use offullfile
to avoid the[filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.
– Wolfie
Nov 14 '18 at 10:27
1
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
add a comment |
The issue is likely that your current directory (pwd
) is not the same as the file location. The relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.
The first solution is your own, but you can do it in one line:
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
Then the quickest way to check if your files are already on the path is using which
:
% Assuming that myFile.m is within the utilities folder, and not shadowed elsewhere.
% If utilities is on the path, which('myFile') will not be empty.
if isempty( which( 'myFile' ) )
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
end
Alternatively, you could pair the above check with a persistent
flag variable, so you don't have to repeat the check if you re-enter the function.
Note that addpath
isn't particularly slow, it's genpath
you want to avoid if you were to add a load of subdirectories too.
Aside: It's good to use fullfile
instead of manually concatenating with (OS dependent) file separators. Less room for error (e.g. double slashes) even if you're always using the same OS.
The issue is likely that your current directory (pwd
) is not the same as the file location. The relative directory isn't relative to the current script, it's relative to pwd
, hence why the mfilename
workaround fixes your issue.
The first solution is your own, but you can do it in one line:
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
Then the quickest way to check if your files are already on the path is using which
:
% Assuming that myFile.m is within the utilities folder, and not shadowed elsewhere.
% If utilities is on the path, which('myFile') will not be empty.
if isempty( which( 'myFile' ) )
addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
end
Alternatively, you could pair the above check with a persistent
flag variable, so you don't have to repeat the check if you re-enter the function.
Note that addpath
isn't particularly slow, it's genpath
you want to avoid if you were to add a load of subdirectories too.
Aside: It's good to use fullfile
instead of manually concatenating with (OS dependent) file separators. Less room for error (e.g. double slashes) even if you're always using the same OS.
edited Nov 14 '18 at 10:25
answered Nov 14 '18 at 10:23
WolfieWolfie
16.5k51745
16.5k51745
1
But as a note:addpath('./utilities/');
is OS independent. I agree with you with the timing ofaddpath
. Its probably better to just add it to path multiple times than to checkwhich
.
– Ander Biguri
Nov 14 '18 at 10:24
1
@AnderBiguri Not disputing that, I'm suggesting the use offullfile
to avoid the[filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.
– Wolfie
Nov 14 '18 at 10:27
1
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
add a comment |
1
But as a note:addpath('./utilities/');
is OS independent. I agree with you with the timing ofaddpath
. Its probably better to just add it to path multiple times than to checkwhich
.
– Ander Biguri
Nov 14 '18 at 10:24
1
@AnderBiguri Not disputing that, I'm suggesting the use offullfile
to avoid the[filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.
– Wolfie
Nov 14 '18 at 10:27
1
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
1
1
But as a note:
addpath('./utilities/');
is OS independent. I agree with you with the timing of addpath
. Its probably better to just add it to path multiple times than to check which
.– Ander Biguri
Nov 14 '18 at 10:24
But as a note:
addpath('./utilities/');
is OS independent. I agree with you with the timing of addpath
. Its probably better to just add it to path multiple times than to check which
.– Ander Biguri
Nov 14 '18 at 10:24
1
1
@AnderBiguri Not disputing that, I'm suggesting the use of
fullfile
to avoid the [filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.– Wolfie
Nov 14 '18 at 10:27
@AnderBiguri Not disputing that, I'm suggesting the use of
fullfile
to avoid the [filepath,'/utilities/']
which the OP used, assuming relative paths won't work because the user in the wrong location anyway.– Wolfie
Nov 14 '18 at 10:27
1
1
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
Certainly this is a good answer for what OP needs ;). One could argue that you may want to do a different thing by design, i.e. you may want to force the user of the script to be in the path above the folders, but its unrelated to the question and its case-specific. This answer is better than mine because it solves the problem that OP has I think ;)
– Ander Biguri
Nov 14 '18 at 10:29
add a comment |
The correct way to include a relative folder is:
addpath('./utilities/');
with a single dot.
This has worked (and works) since the existence of relative folders, AFAIK, so you should be able to use it without fear of deprecation
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
1
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above./utilities
though, as that is how a relative path is defined.
– Ander Biguri
Nov 14 '18 at 10:18
add a comment |
The correct way to include a relative folder is:
addpath('./utilities/');
with a single dot.
This has worked (and works) since the existence of relative folders, AFAIK, so you should be able to use it without fear of deprecation
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
1
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above./utilities
though, as that is how a relative path is defined.
– Ander Biguri
Nov 14 '18 at 10:18
add a comment |
The correct way to include a relative folder is:
addpath('./utilities/');
with a single dot.
This has worked (and works) since the existence of relative folders, AFAIK, so you should be able to use it without fear of deprecation
The correct way to include a relative folder is:
addpath('./utilities/');
with a single dot.
This has worked (and works) since the existence of relative folders, AFAIK, so you should be able to use it without fear of deprecation
answered Nov 14 '18 at 10:00
Ander BiguriAnder Biguri
26.5k105492
26.5k105492
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
1
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above./utilities
though, as that is how a relative path is defined.
– Ander Biguri
Nov 14 '18 at 10:18
add a comment |
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
1
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above./utilities
though, as that is how a relative path is defined.
– Ander Biguri
Nov 14 '18 at 10:18
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
I tried this but the error still persists. matlab claims the folder doesn't exist even though I can see it in the directory next to the m-file. If I give a full path than the path is added with no problems.
– Hojo.Timberwolf
Nov 14 '18 at 10:05
1
1
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above
./utilities
though, as that is how a relative path is defined.– Ander Biguri
Nov 14 '18 at 10:18
@Hojo.Timberwolf Is your code running in the upper folder to that one? I mean, I have used this in MATLAB 2014,2016,2017,2018, Windows 7,8,8.1,10, Ubuntu 16,17,18. It works. You need to be running the code in the folder that is directly above
./utilities
though, as that is how a relative path is defined.– Ander Biguri
Nov 14 '18 at 10:18
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53297233%2fadd-folder-path-based-on-run-script-matlab%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What changed? OS? MATLAB version?
– Ander Biguri
Nov 14 '18 at 9:59
nothing changed from what I can tell. I'm using matlab 2016a on windows 10.
– Hojo.Timberwolf
Nov 14 '18 at 10:02
1
Use
fullfile
instead of manually concatenating with (OS dependent) file separators. If your error is a direct copy of the actual error, it would appear you've used a backslash where your example cites a forward slash, this inconsistency is a red flag. The issue is likely that your current directory (pwd
) is not the same as the file location (perhaps it was when your code worked) - the relative directory isn't relative to the current script, it's relative topwd
, hence why themfilename
workaround fixes your issue.– Wolfie
Nov 14 '18 at 10:07
Is there a simpler method to adding a folder based on script location or is my workaround good enough for what I am doing? As a side question, Is it possible to know if a folder path was added to the list? I don't think it is wise to call
addpath
every time I run the script.– Hojo.Timberwolf
Nov 14 '18 at 10:13
@Wolfie no, I use this in both linux and windows. in Windows, if you do
addpath('.../utilities/);
you will get a warning using...utilities
, as it knows you mean that. Using/
will make the code OS-independent.– Ander Biguri
Nov 14 '18 at 10:16