How to bypass a directory that is not exist?
5 次查看(过去 30 天)
显示 更早的评论
My experiment contains my subjects data and each subject consists of different blocks, before I do the analysis I need to merge my data into one mat file, so first I need to load all of the data, but the problem is some of my subjects have missing blocks and when my codes want to read all data, It crashes and said ''Unable to read file 'Subject 1 Block 3.mat'. No such file or directory'' , so I need to bypass the data that their directory doesn't exist, so I wrote this if statement inside my code but it didn't work:
%load data
s_Initial = 1;
s_Final = 100;
B_Initial = 1;
B_Final = 3;
% merging Data
Subjects_ID = [];
Block_ID = [];
% merge Data
for subject_Counter = s_Initial: s_Final
for block_Counter = B_Initial: B_Final
% load the directory name
load_Data = fullfile(append('Subject', ' ',num2str(subject_Counter),...
' ', 'Block',' ',num2str(block_Counter),'.mat'));
if class(load_Data) == 'char'
all_Subjects(block_Counter, subject_Counter) = load(load_Data);
else
break ;
end
Subjects_ID = [Subjects_ID; subject_Counter];
Block_ID = [Block_ID; block_Counter];
end
end
save('all_Subjects')
0 个评论
采纳的回答
Ameer Hamza
2020-5-31
编辑:Ameer Hamza
2020-5-31
See exist() function https://www.mathworks.com/help/releases/R2020a/matlab/ref/exist.html. Call it with with search type 'file'
if exist(load_Data, 'file')
更多回答(1 个)
Image Analyst
2020-5-31
Try isfile():
%load data
s_Initial = 1;
s_Final = 100;
B_Initial = 1;
B_Final = 3;
% merging Data
Subjects_ID = [];
Block_ID = [];
% merge Data
for subject_Counter = s_Initial: s_Final
for block_Counter = B_Initial: B_Final
% load the directory name
load_Data = fullfile(append('Subject', ' ',num2str(subject_Counter),...
' ', 'Block',' ',num2str(block_Counter),'.mat'));
if isfile(load_Data)
% If the file actually exists.
all_Subjects(block_Counter, subject_Counter) = load(load_Data);
Subjects_ID = [Subjects_ID; subject_Counter];
Block_ID = [Block_ID; block_Counter];
end
end
end
save('all_Subjects')
3 个评论
Image Analyst
2020-6-1
isfile() is the newer, preferred way of doing it. You can only accept one answer however you can "Vote" for any number of answers to award the answerer "reputation points." Thanks in advance. 😊
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!