2017-10-30 1 views
-3

ich folgende Fehlermeldung erhalten, wenn ich versuche, diesen Code „Versuchte zu laufen zuzugreifen id (90); außerhalb der Grenzen Index, weil numel (id) = 89.Error in Untitled66 (Zeile 26) person = finden (ID (DateiNr) == IDs); Kann mir jemand helfen, den Fehler zu finden?Matlab Indizierung und Grenzen

% 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

Was ist mit der Fehlermeldung ist nicht klar? – excaza

Antwort

0

id = lbl(2:3:end) ist nicht so lang wie numel(fileNames). Mit Blick auf Ihren Code ist es unmöglich zu sagen, wie lange fileName oder id ist (aber Fehler msg sagt ID ist 89 lang), seit Sie wählen fileNames aus einem Verzeichnis mit der Bedingung c*. *, während Sie id als Teilmenge aus den Ergebnissen von lbl wählen. Puh ... Es ist Messi. Aber auch hier ist nichts klar darüber, dass die Längen gleich sind. Was ist klar von Fehler msg ist das fileName ist länger als id

Verwandte Themen