diff --git a/usedMcode/balanceClasses.m b/usedMcode/balanceClasses.m index 54e7ba0..59bdcd6 100644 --- a/usedMcode/balanceClasses.m +++ b/usedMcode/balanceClasses.m @@ -1,11 +1,12 @@ function [trainClasses,trainData]=balanceClasses(trainClasses,trainData,maxPerClass,noClasses) -% if maxPerClass > min(histcounts(trainClasses,noClasses)) -% maxPerClass=min(histcounts(trainClasses)); -% warning('not enough Data per Class; set maxPerClass to %i', maxPerClass); -% end + if maxPerClass > min(histcounts(trainClasses,noClasses)) + maxPerClass=min(histcounts(trainClasses)); + warning('not enough Data per Class; set maxPerClass to %i', maxPerClass); + end i=1; + % number of elements per class that has to be deleted delPerClass=histcounts(trainClasses,noClasses)-maxPerClass; - delIndex=zeros(sum(delPerClass),1); + delIndex=zeros(sum(delPerClass),1); % collects the indices that will be deleted while sum(delPerClass)>0 r=fix(size(trainClasses,1)*rand(1)+1); if delPerClass(trainClasses(r)+1)>0 && all(delIndex~=r) diff --git a/usedMcode/callAll.m b/usedMcode/callAll.m index ba53275..b31acb6 100644 --- a/usedMcode/callAll.m +++ b/usedMcode/callAll.m @@ -8,22 +8,27 @@ allSubjects=true; %run all subjects and days or only one random day for one random subject name='MoveRest'; %suffix for the output, has to be valid name for file (no space, /, ...) -windowEMG=0.2; + +% window and shift given in seconds +windowEMG=0.2; windowEEG=1; shiftEMG=0.05; shiftEEG=0.2; eegOffset=0; %predict actions x*shiftEEG after EEG measurement pburgOrder=250; -minEEGFreq=2; +minEEGFreq=2; %[Hz] maxEEGFreq=49; -pause=false; +pause=false; % is all data 1s befor movement dropped? noLFsamples=5; +% Parameters tried for ridge regression ridgeParams=100; -k=10; +k=10; % k-fold CV (usually 10) +% Parameters tried for SVM: 2^-x to 2^x in steps of 1 in x maxExpC=0; maxPerClass=250; poolObj=parpool(32); +% structer data of runs [subjects,numbers]=namesAndNumbers(pathToFile); numbersMat=cell2mat(numbers); subjectsForNumbers=cell(size(numbersMat,2),1); @@ -37,7 +42,7 @@ end j=j-1; %number of trial-days for all subjects - +% run for all 51 runs if allSubjects meanAccuracysEMG=zeros([j,1]); @@ -125,6 +130,7 @@ save(strcat(pathToFile,sprintf('../matlabData/%s_callAll-%s.mat',datestr(datetime('now')),name))); else + % runn only for one random run j=fix(rand()*size(numbersMat,2)+1); number=numbersMat(j);