Saving outputs to different folder than m-file.

58 ビュー (過去 30 日間)
Daniel
Daniel 2013 年 6 月 28 日
コメント済み: Stephen23 2017 年 1 月 25 日
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.

採用された回答

Matt Kindig
Matt Kindig 2013 年 6 月 28 日
%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 件のコメント
Daniel
Daniel 2013 年 6 月 28 日
Thank you. Works just as needed. I keep forgetting to connect multiple parts of strings together, like this for a file name.

サインインしてコメントする。

その他の回答 (2 件)

Peyman Obeidy
Peyman Obeidy 2017 年 1 月 25 日
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 件のコメント
Stephen23
Stephen23 2017 年 1 月 25 日
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.

サインインしてコメントする。


Peyman Obeidy
Peyman Obeidy 2017 年 1 月 25 日
[fName, pName] = uigetfile('*.tif');

カテゴリ

Help Center および File ExchangeWorkspace Variables and MAT-Files についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by