Make the subfolders name in output folder the same input folder

조회 수: 1 (최근 30일)
Long Hà Vinh
Long Hà Vinh 2018년 11월 3일
댓글: Long Hà Vinh 2018년 11월 3일
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
awezmm
awezmm 2018년 11월 3일
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 2018년 11월 3일
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"

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2018년 11월 3일
편집: Stephen23 2018년 11월 3일
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
Long Hà Vinh
Long Hà Vinh 2018년 11월 3일
@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 2018년 11월 3일
@Stephen Cobeldick: This completely work on windows version. So I need to fix my Matlab on Linux. Thanks for your support!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

madhan ravi
madhan ravi 2018년 11월 3일

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by