error problem with extracting data
조회 수: 2 (최근 30일)
이전 댓글 표시
Hossein Shahbodaghkhan
2019년 1월 12일
답변: Hossein Shahbodaghkhan
2019년 1월 13일
Hi everyone.
I'm very glad to join you on this incredible community...
I'm trying to write a program to training and testing database for my machine learning project.
in first step I wrote a m-file to export files.
here is the code:
function erpsplit(indir)
d = dir(indir);
filelist = {};
datadirection = {};
classname = {'dislike','like'};
observations = {};
for i = 1:length(d)
a = strcmp(d(i).name,classname{1});
b = strcmp(d(i).name,classname{2});
p = true;
q = true;
for m = 1:length(a)
p = p & a(1,m);
end
for m = 1:length(b)
q = q & b(1,m);
end
if (d(i).isdir == 0)
continue;
else if (p | q)
datadirection = cat(2,datadirection,{[indir '\' d(i).name]});
end
end
for k = [1,2]
d = dir(datadirection{k});
for i = 3:length(d)
if (d(i).isdir == 0)
filename = sprintf('%s\\%s',datadirection{k},d(i).name);
filelist{i-2,k} = filename;
end
end
end
for k = [1,2]
for i = 1:16
for j = 1:length(filelist)
data = load(filelist{j,k});
variables = fields(data);
observations{j,i,k} = data.(variables{1});
observations{j,i,k} = observations{j,i,k}(i,:);
end
end
end
s = 'Output Files';
mkdir(indir,s);
s = [indir '\' s];
for k = [1,2]
mkdir(s,classname{k});
s = [s '\' classname{k}];
for i = 1:16
str = ['ch#' num2str(i)];
mkdir(s,str);
s = [s '\' str];
for j = 1:length(filelist)
str = [classname{k} '_subject#' num2str(j) '_ch#' num2str(i) '.xls'];
var = observation{j,i,k};
s = [s '\\' str];
save(s,'var');
end
end
end
end
but an error occured during decoding the following line:
d = dir(datadirection{k});
it says:
Index exceeds array bounds.
Error in erpsplit (line 32)
d = dir(datadirection{k});
but I tracing the code and the "datadirection" cell looks just fine.
Thanks everyone for assisting!
댓글 수: 0
채택된 답변
Image Analyst
2019년 1월 12일
편집: Image Analyst
2019년 1월 12일
At line 32, insert these lines:
whos k
whos datadirection
What do you see in the command window? Chances are datadirection has fewer cells than k.
댓글 수: 3
Image Analyst
2019년 1월 13일
Well, step through it line by line in the debugger and figure out why you never hit a line that assigns it to anything.
If you still can't figure it out, attach some files that your load() statement wants to read in and we'll do the same thing that you can do for you (that is, step through it line by line).
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Power and Energy Systems에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!