Saving outputs to different folder than m-file.

85 Ansichten (letzte 30 Tage)
Daniel
Daniel am 28 Jun. 2013
Kommentiert: Stephen23 am 25 Jan. 2017
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.

Akzeptierte Antwort

Matt Kindig
Matt Kindig am 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 Kommentar
Daniel
Daniel am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Peyman Obeidy
Peyman Obeidy am 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 Kommentar
Stephen23
Stephen23 am 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.

Melden Sie sich an, um zu kommentieren.


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

Kategorien

Mehr zu Workspace Variables and MAT-Files finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by