Saving outputs to different folder than m-file.

163 vues (au cours des 30 derniers jours)
Daniel
Daniel le 28 Juin 2013
Commenté : Stephen23 le 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.

Réponse acceptée

Matt Kindig
Matt Kindig le 28 Juin 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 commentaire
Daniel
Daniel le 28 Juin 2013
Thank you. Works just as needed. I keep forgetting to connect multiple parts of strings together, like this for a file name.

Connectez-vous pour commenter.

Plus de réponses (2)

Peyman Obeidy
Peyman Obeidy le 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 commentaire
Stephen23
Stephen23 le 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.

Connectez-vous pour commenter.


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

Catégories

En savoir plus sur Printing and Saving dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by