2017-10-30 1 views
-3

이 코드를 실행하려고하면 "num (id) = 89.Error in Untitled66 (line 26) person = find을 (를) 사용하여 범위를 벗어났습니다. (id (fileNum) == id); " 누군가가 오류를 발견하도록 도와 줄 수 있습니까?Matlab 색인 생성 및 경계

% File Names reading and label generation 

dataFolder= 'allcontent/'; 
fileNames = dir([dataFolder 'c*.*']); 

lbl = sscanf(cat(1,fileNames.name)','co2%c%d.rd_%d.mat'); 
status = lbl(1:3:end); 
id = lbl(2:3:end); 
ids = unique(id); 
trial = lbl(3:3:end); 

%% File reading and Data Generation 


%data = 256*channel*trial*stimulus*id 
trData = zeros(256,64,10,3,20,'single'); 
label = zeros(10,3,20,'single'); 
trials = ones(3,20); 

for fileNum = 1:numel(fileNames) 

fin = fopen([dataFolder fileNames(fileNum).name]); 
for i=1:4 
line= fgetl(fin); 
end 
a= sscanf(line,'%S%d %s , trial %d'); 
stimulus = (3-numel(a)); 

person = find(id(fileNum)==ids); 
trialNum = trials(stimulus, person); 
label (trialNum, stimulus, person) = status(fileNum); 
fprintf('%d %d %d\n', person,trialNum, stimulus); 

for ch=1: 64 
fgetl(fin); 
curData = textscan(fin,'%d %s %d %f'); 
trData(:,ch,trialNum,stimulus,person) = curData{4}; 
end 
trials(stimulus,person) = trials(stimulus,person)+1; 
fclose(fin); 
end 
+6

오류 메시지가 분명하지는 않은 무엇입니까? – excaza

답변

0

id = lbl(2:3:end)는 한 numel(fileNames)로하지 않습니다. 코드를 보면 당신이 lbl의 결과에서 일부 부분 집합으로 id을 선택하는 동안 조건 c*. *와 디렉토리에서 fileNames을 선택하기 때문에, fileName 또는 id이다 (그러나 오류 MSG가 ID가 긴 89 말한다) 시간을 말하는 것은 불가능하다 .. 휴 ... 그것은 messi입니다. 그러나 길이가 똑같은 것은 분명합니다. 무엇 오류 메시지에서 지우는 것입니다 fileName보다 길다 id