diff --git a/usedMcode/ridgeCVvia.m b/usedMcode/ridgeCVvia.m index ec2b7cd..63fde4c 100644 --- a/usedMcode/ridgeCVvia.m +++ b/usedMcode/ridgeCVvia.m @@ -47,25 +47,39 @@ predicted=predicted(1:end-eegOffset,:); end - viaDataPredicted=zeros(size(viaData)); - correlation=zeros(size(predicted,2)); - viaCorrelation=zeros(size(viaData,2)); - - parfor j=1:size(viaData,2) - pred=viaData(:,j); - - coeffs=ridge(pred,trainingData,ridgeParams(1),0); - - viaDataPredicted(:,j)=coeffs(1)+trainingData*coeffs(2:end); - viaCorrelation(j)=corr(pred,viaDataPredicted(:,j)); - end + viaCorr=zeros([k,size(viaData,2)]); + finalCorr=zeros([k,size(predicted,2)]); - parfor j=1:size(predicted,2) - pred=predicted(:,j); + randMap=randperm(size(trainingData,1)); + for i=1:k + leaveData=trainingData(mod(randMap,k)==i-1,:); + leaveVia=viaData(mod(randMap,k)==i-1,:); + leavePred=predicted(mod(randMap,k)==i-1,:); + remainingData=trainingData(mod(randMap,k)~=i-1,:); + remainingVia=viaData(mod(randMap,k)~=i-1,:); + remainingPred=predicted(mod(randMap,k)~=i-1,:); - coeffs=ridge(pred,viaDataPredicted,ridgeParams(1),0); - correlation(j)=ridgeCorrelation(viaDataPredicted,pred,coeffs); + for j=1:size(viaData,2) + coeffs(:,j)=ridge(remainingVia(:,j),remainingData,ridgeParams(1),0); + via=coeffs(1,j)+leaveData*coeffs(2:end,j); + viaCorr(i,j)=corr(leaveVia(:,j),via); + end + [~,maxIndex]=max(mean(viaCorr,2)); + viaDataPredicted=coeffs(1,maxIndex)+leaveData*coeffs(2:end,maxIndex); + + viaDataPredictedLeave=viaDataPredicted(mod(randMap,k)==i-1,:); + viaDataPredictedRemaining=viaDataPredicted(mod(randMap,k)~=i-1,:); + + for j=1:size(predicted,2) + + coeffs=ridge(remainingPred(:,j),viaDataPredictedRemaining,ridgeParams(1),0); + + finalCorr(i,j)=ridgeCorrelation(viaDataPredictedLeave,leavePred,coeffs); + + end end + viaCorrelation=mean(viaCorr,1); + correlation=mean(finalCorr,1); end \ No newline at end of file