diff --git a/usedMcode/callAll.m b/usedMcode/callAll.m index 2f2508b..5f35c2d 100644 --- a/usedMcode/callAll.m +++ b/usedMcode/callAll.m @@ -47,18 +47,18 @@ % run for all 51 runs if allSubjects - meanAccuracysEMG=zeros([j,1]); - meanAccuracysEEG=zeros([j,1]); - meanAccuracysLF=zeros([j,1]); - maxCEMG=zeros([j,k,1]); - maxCEEG=zeros([j,k,1]); - maxCLF=zeros([j,k,1]); - meanAccuracysEMGmovements=zeros([j,1]); - meanAccuracysEEGmovements=zeros([j,1]); - meanAccuracysLFmovements=zeros([j,1]); - maxCEMGmovements=zeros([j,k,1]); - maxCEEGmovements=zeros([j,k,1]); - maxCLFmovements=zeros([j,k,1]); +% meanAccuracysEMG=zeros([j,1]); +% meanAccuracysEEG=zeros([j,1]); +% meanAccuracysLF=zeros([j,1]); +% maxCEMG=zeros([j,k,1]); +% maxCEEG=zeros([j,k,1]); +% maxCLF=zeros([j,k,1]); +% meanAccuracysEMGmovements=zeros([j,1]); +% meanAccuracysEEGmovements=zeros([j,1]); +% meanAccuracysLFmovements=zeros([j,1]); +% maxCEMGmovements=zeros([j,k,1]); +% maxCEEGmovements=zeros([j,k,1]); +% maxCLFmovements=zeros([j,k,1]); % cmScaledEMG=zeros([j,5,5]); % cmScaledEEG=zeros([j,5,5]); % cmScaledLF=zeros([j,5,5]); @@ -89,7 +89,11 @@ % maxRidgeParamIndexEEGemg=zeros([j,size(EMGChannels,2),k]); % correlationEEGemg=zeros([j,size(EMGChannels,2)]); % maxRidgeParamIndexAutoencKin=zeros([j,noSynergies,k]); + maxRidgeParamIndexPCAKin=zeros([j,noSynergies,k]); + maxRidgeParamIndexNNMFKin=zeros([j,noSynergies,k]); % correlationAutoencKin=zeros([j,3]); + correlationPCAKin=zeros([j,3]); + correlationNNMFKin=zeros([j,3]); % correlationViaAutoenc=zeros([j,3]); % correlationViaPCA=zeros([j,3]); % correlationViaNNMF=zeros([j,3]); @@ -102,9 +106,9 @@ number=numbersMat(j); subject=subjectsForNumbers{j}; savePath=readAll(pathToFile,subject,number,windowEMG,windowEEG,shiftEMG,shiftEEG,maxFile,threshold,pburgOrder,minEEGFreq,maxEEGFreq,pause,noLFsamples,EMGChannels,noSynergies); - [meanAccuracysEMG(j),maxCEMG(j,:),~]=svmEciton(savePath,'EMG',k,maxExpC,maxPerClass,eegOffset,true); - [meanAccuracysEEG(j),maxCEEG(j,:),~]=svmEciton(savePath,'EEG',k,maxExpC,maxPerClass,eegOffset,true); - [meanAccuracysLF(j),maxCLF(j,:),~]=svmEciton(savePath,'LF',k,maxExpC,maxPerClass,eegOffset,true); +% [meanAccuracysEMG(j),maxCEMG(j,:),~]=svmEciton(savePath,'EMG',k,maxExpC,maxPerClass,eegOffset,true); +% [meanAccuracysEEG(j),maxCEEG(j,:),~]=svmEciton(savePath,'EEG',k,maxExpC,maxPerClass,eegOffset,true); +% [meanAccuracysLF(j),maxCLF(j,:),~]=svmEciton(savePath,'LF',k,maxExpC,maxPerClass,eegOffset,true); % [meanAccuracysEMGmovements(j),maxCEMGmovements(j,:),cmScaledEMG(j,:,:)]=svmEciton(savePath,'EMG',k,maxExpC,maxPerClass,eegOffset,false); % [meanAccuracysEEGmovements(j),maxCEEGmovements(j,:),cmScaledEEG(j,:,:)]=svmEciton(savePath,'EEG',k,maxExpC,maxPerClass,eegOffset,false); % [meanAccuracysLFmovements(j),maxCLFmovements(j,:),cmScaledLF(j,:,:)]=svmEciton(savePath,'LF',k,maxExpC,maxPerClass,eegOffset,false); @@ -122,6 +126,8 @@ % [correlationLFnnmf(j,:),maxRidgeParamIndexLFnnmf(j,:,:)]=ridgeCV(savePath,'LF','NNMF',k,ridgeParams,eegOffset); % [correlationEEGemg(j,:),maxRidgeParamIndexEEGemg(j,:,:)]=ridgeCV(savePath,'EEG','EMG',k,ridgeParams,eegOffset); % [correlationAutoencKin(j,:),maxRidgeParamIndexAutoencKin(j,:,:)]=ridgeCV(savePath,'Autoenc','kin',k,ridgeParams,eegOffset); + [correlationPCAKin(j,:),maxRidgeParamIndexPCAKin(j,:,:)]=ridgeCV(savePath,'PCA','kin',k,ridgeParams,eegOffset); + [correlationNNMFKin(j,:),maxRidgeParamIndexNNMFKin(j,:,:)]=ridgeCV(savePath,'NNMF','kin',k,ridgeParams,eegOffset); % [correlationViaAutoenc(j,:),viaCorrelationAutoenc(j,:)]=ridgeCVvia(savePath,'EEG','Autoenc','kin',k,ridgeParams,eegOffset); % [correlationViaPCA(j,:),viaCorrelationPCA(j,:)]=ridgeCVvia(savePath,'EEG','PCA','kin',k,ridgeParams,eegOffset); % [correlationViaNNMF(j,:),viaCorrelationNNMF(j,:)]=ridgeCVvia(savePath,'EEG','NNMF','kin',k,ridgeParams,eegOffset); diff --git a/usedMcode/evaluationCorrelations.m b/usedMcode/evaluationCorrelations.m index cfefdcc..c226946 100644 --- a/usedMcode/evaluationCorrelations.m +++ b/usedMcode/evaluationCorrelations.m @@ -130,4 +130,51 @@ anova1([correlations.EMG.kin.Default,correlations.Autoenc.kin.Default],{'EMG','EMG','EMG','Autoenc','Autoenc','Autoenc'}) title('Predict Velocities from EMG or Synergies') -mySaveFigure(gcf,strcat(figureSavePath,'EMGautoenc')) \ No newline at end of file +mySaveFigure(gcf,strcat(figureSavePath,'EMGautoenc')) + +% prediction from EEG +input=correlations.EEG; + +emgPrediction=input.emg.Default; +autoencPrediction=input.Autoenc.Default; +pcaPrediction=input.PCA.Default; +nnmfPrediction=input.NNMF.Default; + +EMG=cell(size(emgPrediction,2),1); +EMG(:)={'EMG'}; +Autoenc=cell(size(autoencPrediction,2),1); +Autoenc(:)={'Autoenc'}; +PCA=cell(size(pcaPrediction,2),1); +PCA(:)={'PCA'}; +NNMF=cell(size(nnmfPrediction,2),1); +NNMF(:)={'NMF'}; + +anova1([emgPrediction,autoencPrediction,pcaPrediction,nnmfPrediction],cat(1,EMG,Autoenc,PCA,NNMF)) + +title('Predict Synergies or EMG from EEG') +ylabel('correlation') +mySaveFigure(gcf,strcat(figureSavePath,'predictEMGSyn')) + + +anova1([emgPrediction,autoencPrediction],cat(1,EMG,Autoenc)) + +title('Predict Autoencoder or EMG from EEG') +ylabel('correlation') +mySaveFigure(gcf,strcat(figureSavePath,'predictEMGAutoenc')) + +%% compare predictions via different synergies +input=correlations.EEG.pos; + +viaAutoenc=input.ViaAutoenc; +viaPCA=input.ViaPCA; +viaNNMF=input.ViaNNMF; + + +Autoenc=cell(size(viaAutoenc,2),1); +Autoenc(:)={'Autoenc'}; +PCA=cell(size(viaPCA,2),1); +PCA(:)={'PCA'}; +NNMF=cell(size(viaNNMF,2),1); +NNMF(:)={'NMF'}; + +anova1([viaAutoenc,viaPCA,viaNNMF],cat(1,Autoenc,PCA,NNMF)) \ No newline at end of file diff --git a/usedMcode/ridgeCV.m b/usedMcode/ridgeCV.m index 4d92c5f..7b06653 100644 --- a/usedMcode/ridgeCV.m +++ b/usedMcode/ridgeCV.m @@ -13,8 +13,12 @@ trainingData=trainingDataEEGlf(eegOffset+1:end,:); elseif strcmp(data,'Autoenc') trainingData=synergiesAutoenc; + elseif strcmp(data,'PCA') + trainingData=synergiesPCA; + elseif strcmp(data,'NNMF') + trainingData=synergiesNNMF; else - error('only EEG, EMG and LF are valid inputs for data'); + error('only EEG, EMG, LF, Autoenc, PCA and NNMF are valid inputs for data'); end % if data is smaller then goal, goal is scaled down factor=size(trainingDataEMG,1)/(size(trainingData,1)+eegOffset);