MATLAB Answers

Daniel
0

Saving outputs to different folder than m-file.

Asked by Daniel
on 28 Jun 2013
Latest activity Commented on by Stephen Cobeldick on 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.

  0 Comments

Log in to comment.

Tags

Products

No products are associated with this question.

3 Answers

Answer by Matt Kindig on 28 Jun 2013
 Accepted Answer

%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

Thank you. Works just as needed. I keep forgetting to connect multiple parts of strings together, like this for a file name.

Log in to comment.


Answer by 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

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.

Log in to comment.


Answer by Peyman Obeidy on 25 Jan 2017

[fName, pName] = uigetfile('*.tif');

  0 Comments

Log in to comment.


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!