diff --git a/usedMcode/callAll.m b/usedMcode/callAll.m index 42e8ade..ca8dc86 100644 --- a/usedMcode/callAll.m +++ b/usedMcode/callAll.m @@ -21,7 +21,7 @@ k=10; maxExpC=0; maxPerClass=250; -poolObj=parpool(12); +poolObj=parpool(3); [subjects,numbers]=namesAndNumbers(pathToFile); numbersMat=cell2mat(numbers); @@ -29,7 +29,7 @@ j=1; for i=1:size(subjects,2) subject=subjects{i}; - for number=numbers{i} + for number=numbers{i} subjectsForNumbers{j}=subject; j=j+1; end @@ -72,7 +72,7 @@ correlationEMGnnmf=zeros([j,noSynergies]); correlationEEGnnmf=zeros([j,noSynergies]); correlationLFnnmf=zeros([j,noSynergies]); - + parfor j=1:size(numbersMat,2) number=numbersMat(j); subject=subjectsForNumbers{j}; @@ -94,7 +94,7 @@ [correlationLFnnmf(j,:),maxRidgeParamIndexLFnnmf(j,:,:)]=ridgeCV(savePath,'LF','NNMF',k,ridgeParams,shiftEMG,shiftEEG); fprintf('%s%i finished %s\n',subject,number,datestr(datetime('now'))) end - + save(strcat(pathToFile,sprintf('../matlabData/%s_callAll-%s.mat',datestr(datetime('now'),name)))); else j=fix(rand()*size(numbersMat,2)+1); diff --git a/usedMcode/readAll.m b/usedMcode/readAll.m index 79e6486..058d9f0 100644 --- a/usedMcode/readAll.m +++ b/usedMcode/readAll.m @@ -5,7 +5,7 @@ savePath=strcat(pathToFile,... sprintf('../matlabData/%s%i%imsWindowEMG%isWindowEEG%imsShiftEMG%imsShiftEEGFreq%ito%iPause%ipBurg%i.mat',... subject,number,windowEMG*1000,windowEEG,shiftEMG*1000,shiftEEG*1000,minEEGFreq,maxEEGFreq,pause,pburgOrder)); - + %only create file if it doesn't exist yet if exist(savePath, 'file') ~= 2 fprintf(strcat(savePath,' not existing; creating\n')); @@ -46,14 +46,16 @@ smoothClassificationEMG=zeros(size(classificationWithPause)); for i=1:size(classificationWithPause,1) smoothClassificationEMG(i)=round(mode(classificationWithPause(... - max(i-fix(bci_sf/1000),1):min(i+fix(bci_sf/1000),end)))); + max(i-fix(bci_sf/1000),1):min(i+fix(bci_sf/1000),end)))); end clear classificationWithPause - + smoothClassificationEEG=zeros([size(trainingDataEEG,1),1]); for i=1:size(smoothClassificationEEG,1) - smoothClassificationEEG(i)=mode(smoothClassificationEMG(fix(round(shiftEEG/shiftEMG*(i-1))+1):min(fix(round(shiftEEG/shiftEMG*i)),max(size(smoothClassificationEMG))))); + smoothClassificationEEG(i)=mode(smoothClassificationEMG(fix(... + round(shiftEEG/shiftEMG*(i-1))+1):min(fix(round(... + shiftEEG/shiftEMG*i)),max(size(smoothClassificationEMG))))); end trainingDataEEG=trainingDataEEG(smoothClassificationEEG~=-1,:,:); @@ -61,8 +63,11 @@ trainingDataEMG=trainingDataEMG(smoothClassificationEMG~=-1,:); classificationEMG=smoothClassificationEMG(smoothClassificationEMG~=-1); classificationEEG=smoothClassificationEEG(smoothClassificationEEG~=-1); + + % all created matching the size of EMGdata, if necessary downsampling + % has to be done when used kinematics=kinMat(smoothClassificationEMG~=-1,:); - ae=trainAutoencoder(trainingDataEMG',noSynergies,'ShowProgressWindow',false); + ae=trainAutoencoder(trainingDataEMG',noSynergies,'ShowProgressWindow',false); synergiesAutoenc=encode(ae,trainingDataEMG')'; COEFF=pca(trainingDataEMG,'Centered',false); synergiesPCA=trainingDataEMG/COEFF(:,1:4)'; @@ -71,10 +76,12 @@ clear smoothClassification i save(savePath,'trainingDataEEG','trainingDataEEGlf','trainingDataEMG',... - 'classificationEMG','classificationEEG','kinematics','synergiesAutoenc','synergiesPCA',... - 'synergiesNNMF','-v7.3'); + 'classificationEMG','classificationEEG','kinematics','synergiesAutoenc',... + 'synergiesPCA','synergiesNNMF','-v7.3'); %fprintf('finished reading %s%i %s\n',subject,number,datestr(datetime('now'))); + else + fprintf(strcat(savePath,' yet existing; nothing to do\n')); end end diff --git a/usedMcode/ridgeCV.m b/usedMcode/ridgeCV.m index 63a1e50..3bcb0f6 100644 --- a/usedMcode/ridgeCV.m +++ b/usedMcode/ridgeCV.m @@ -1,7 +1,7 @@ function [correlation,maxRidgeParamIndex]=ridgeCV(savePath,data,goal,k,ridgeParams,shiftEMG,shiftEEG) load(savePath); clear classification; - + if strcmp(data,'EEG') trainingData=trainingDataEEG; factor=shiftEEG/shiftEMG; @@ -14,11 +14,11 @@ else error('only EEG, EMG and LF are valid inputs for data'); end - + clear trainingDataEEG; clear trainingDataEEGlf; clear trainingDataEMG; - + if strcmp(goal,'Autoenc') predicted=shiftingMean(synergiesAutoenc,factor); elseif strcmp(goal,'PCA') @@ -30,14 +30,14 @@ else error('only kin, Autoenc, PCA and NNMF are valid inputs for goal'); end - + clear kinematics; clear synergies*; - - + + correlation=zeros(size(predicted,2),1); maxRidgeParamIndex=zeros(size(predicted,2),k); - + for j=1:size(predicted,2) randMap=randperm(size(trainingData,1)); pred=predicted(:,j); @@ -49,7 +49,7 @@ remainingData=trainingData(mod(randMap,k)~=i-1,:); remainingPred=pred(mod(randMap,k)~=i-1); - [coeffs,maxRidgeParamIndex(j,i)]=kFoldRidge(remainingData,remainingPred,k,ridgeParams,shiftEMG,shiftEEG); + [coeffs,maxRidgeParamIndex(j,i)]=kFoldRidge(remainingData,remainingPred,k,ridgeParams); correlations(i)=ridgeCorrelation(leaveData,leavePerd,coeffs); end