Saving outputs to different folder than m-file.

164 views (last 30 days)
I have a script that I use on many different files saved in different folders. All of the files I want to keep separate I keep in different folders. I use the 'save' and 'saveas' functions in my script to keep my results. I have only one version of the script at a time, and change the inputs as appropriate for different data sets.
I would like to have the saved files to be save in the same folder I am pulling the inputs from, instead of the folder I have the m-file saved in. At this point I have not been able to successfully do this.

Accepted Answer

Matt Kindig
Matt Kindig on 28 Jun 2013
%get the directory of your input files:
pathname = fileparts('/input/file');
%use that when you save
matfile = fullfile(pathname, 'output.mat');
figfile = fullfile(pathname, 'output.fig');
save(matfile, ...');
saveas(figfile, ...');
  1 Comment
Daniel
Daniel on 28 Jun 2013
Thank you. Works just as needed. I keep forgetting to connect multiple parts of strings together, like this for a file name.

Sign in to comment.

More Answers (2)

Peyman Obeidy
Peyman Obeidy on 25 Jan 2017
Thank you, this will help you to create a new folder and save the outcome into the new folder
% code
%make a new directory for each file
%make
mkdir(num2str(pName),fName(1:length(fName)-4));
% get the new path
FolderDestination=strcat(num2str(pName),fName(1:length(fName)-4));
% make a mfile in new path
matfile = fullfile(FolderDestination, 'output.mat');
% add variables into that m file
save(matfile);
  1 Comment
Stephen23
Stephen23 on 25 Jan 2017
There some significant improvements that could be made to this code. For a start, this code assumes that file extensions all have the same length (not true). A better solution is to simply use
[pathstr,namestr,extstr] = fileparts(fname);
which will correctly identify and separate the path, name, and extensions, regardless of the length of the extension. Also the this code assumes that PName has a trailing file separator character (might not be true). A much better solution than using strcat is to use:
fullfile(pathstr,[filestr,extstr])
which will always check and include the file separator character if required.

Sign in to comment.


Peyman Obeidy
Peyman Obeidy on 25 Jan 2017
[fName, pName] = uigetfile('*.tif');

Categories

Find more on Printing and Saving in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!