Make the subfolders name in output folder the same input folder

1 visualizzazione (ultimi 30 giorni)
I have a data process folder like this: with directory ~/Matlab/homework_4/input
I already access into the folder to sub-folder to do my job by the code:
d = dir(pwd);%d(1:2) = [];
isub = [d(:).isdir]; %# returns logical vector
fname = {d(isub).name}';
fname(ismember({d.name}, {'.', '..'})) = []; %remove . and .. of folder name.
% ------------------------------------------------------------
for i = 1:length(fname)
cd(char(fname{i})
<[........ Do the job .......]
output_data.dat>
end
and wanna create the same-name of sub-folder on the directories: "~/Matlab/homework_4/output" using "fname{i}" on the code. And move the output_data.dat to that folder. Any way to do this? Many thanks :(
  2 Commenti
awezmm
awezmm il 3 Nov 2018
So basically, you want to have a copy of ~/Matlab/homework_4/input but instead, name it ~/Matlab/homework_4/output with all the same subfolders inside?
Long Hà Vinh
Long Hà Vinh il 3 Nov 2018
Yes. after the process, input has "output_data_*.dat" file and other files in any subfolder, but on "output" folder is clear. I want have the same subfolder on "output" folder and have only "output_data_*.dat"

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 3 Nov 2018
Modificato: Stephen23 il 3 Nov 2018
Do NOT use cd: this is a slow and inappropriate for reading/writing data. You should just use absolute/relative filenames generated with fullfile, e.g.:
D = '~/Matlab/homework_4';
S = dir(fullfile(D,'input','*'));
N = setdiff({S([S.isdir]).name},{'.','..'});
for k = 1:numel(N)
src = fullfile(D,'input',N{k}) % input subfolder path
I = imread(fullfile(src,'hello.jpg')); % example file import
... process the image.
dst = fullfile(D,'output',N{k}) % output subfolder path
imwrite(I,fullfile(dst,'world.jpg')) % example file export
end
All MATLAB functions that import/export files work with relative/absolute filenames, and this is faster, more efficient, and easier to debug than mucking about with changing directories.
  8 Commenti
Long Hà Vinh
Long Hà Vinh il 3 Nov 2018
@Stephen: It said:
'~/Matlab/homework_4/input'
when I run in command. But when I run
E = fullfile(D,'input')
S = dir(E)
It break and when I call
E=
'~/Matlab/homework_4/input'
S =
0×1 empty struct array with fields:
name
folder
date
bytes
isdir
datenum
Sound crazy!
Long Hà Vinh
Long Hà Vinh il 3 Nov 2018
@Stephen Cobeldick: This completely work on windows version. So I need to fix my Matlab on Linux. Thanks for your support!

Accedi per commentare.

Più risposte (1)

madhan ravi
madhan ravi il 3 Nov 2018

Categorie

Scopri di più su Startup and Shutdown in Help Center e File Exchange

Prodotti


Release

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by