No BSD License  

Highlights from
GUI for the performance analysis of pedelecs

image thumbnail
from GUI for the performance analysis of pedelecs by Jan Cappelle
Modeling the behaviour of electric bicycles

RMSEcalculKSI(ksimodel,testdataZA,RMSEs,models)
function RMSE = RMSEcalculKSI(ksimodel,testdataZA,RMSEs,models)

MAM=ksimodel.MAM;
ksi=ksimodel.ksi;
Xnew=ksimodel.X;
       XtestZA=testdataZA(:,1:2);
        RMSEZA=RMSEs.ZA;
        YtestZA=simlssvm(models.ZA,XtestZA);
        a=length(XtestZA);
        Ytest=zeros(a,3);
        %first calculate the traction forces of the testdata
        
%         if sum(MAM)==1
%             if MAM(1)==1
%             Ytest(:,1)= simlssvm(models.MAe,XtestZA);
%             RMSEh(1)=RMSEs.MAe;
%             elseif MAM(2)==1
%             Ytest(:,1)= simlssvm(models.MAn,XtestZA);
%             RMSEh(2)=RMSEs.MAn;
%             elseif MAM(3)==1
%             Ytest(:,1)= simlssvm(models.MAp,XtestZA);
%             RMSEh(3)=RMSEs.MAp;
%             else
%             Ytest(:,1)=0;
%             R
%             end
%         else 
%             if MAM(1)==1
%             Ytest(:,1)= simlssvm(models.MAe,XtestZA);
%             RMSEh(1)=RMSEs.MAe;
%             else
%             Ytest(:,1)=0;
%             end
%             if MAM(2)==1
%             Ytest(:,2)= simlssvm(models.MAn,XtestZA);
%             RMSEh(2)=RMSEs.MAn;
%             else
%             Ytest(:,2)=0;
%             end
%             if MAM(3)==1
%             Ytest(:,3)= simlssvm(models.MAp,XtestZA);
%             RMSEh(3)=RMSEs.MAp;
%             else
%             Ytest(:,3)=0;
%             end 
  
            if MAM(1)==1
            Ytest(:,1)= simlssvm(models.MAe,XtestZA);
            RMSEh(1)=RMSEs.MAe;
            else
            Ytest(:,1)=0;
            end
            if MAM(2)==1
            Ytest(:,2)= simlssvm(models.MAn,XtestZA);
            RMSEh(2)=RMSEs.MAn;
            else
            Ytest(:,2)=0;
            end
            if MAM(3)==1
            Ytest(:,3)= simlssvm(models.MAp,XtestZA);
            RMSEh(3)=RMSEs.MAp;
            else
            Ytest(:,3)=0;
            end          
            
       % Here calculate ksitest
        for k=1:3
            if MAM(k)==1
                for i=1:length(XtestZA)
                    ksitest(i,k)=1-YtestZA(i)/Ytest(i,k);
                end
            else
                for i=1:length((XtestZA))
                    ksitest(i,k)=0;
                end 
            end
        end  
        
        %Calculate the RMSE
                %Remove the smallest forces (smaller than 5N)
                maxtrek=5;
                for i=1:length(XtestZA)
                    for j=1:3
                        if Ytest(i,j)<maxtrek
                            Ytest(i,j)=NaN;
                        end
                    end
                end
                
                %
               maxtrek=2;
                for i=1:length(XtestZA)
                    if YtestZA(i)<maxtrek
                        YtestZA(i)=NaN;
                    end
                end 
        
        %The percental error on the traction forces
        procZA=RMSEZA./YtestZA;
        for k=1:3
            if MAM(k)==1
                proc(:,k)=RMSEh(k)./Ytest(:,k);
            else
                proc(:,k)=ksitest(:,k);
            end
        end

        %The percental errors on the ksis
        for k=1:3
            if MAM(k)==1
                procksi(:,k)=procZA+proc(:,k);
            else
                procksi(:,k)=ksitest(:,k);
            end
        end


         %The absolute errors on the ksis
         for k=1:3
            if MAM(k)==1
                absksi(:,k)=procksi(:,k).*ksitest(:,k) %please check again!!!!!!!!!!!!!!!!!!!!!!
            else
               absksi(:,k)=ksitest(:,k); 
            end
         end


         %remove NaNs
       for k=1:3   
           r=1; 
         if MAM(k)==1
             for i=1:length(YtestZA)
                    if not(isnan(absksi(i,k)))
                        abssksi(r,k)=absksi(i,k);
                        r=r+1;
                    else
                        r=r+1;
                    end
             end
          end
       end
       
      
         for k=1:3
             if MAM(k)==1
            RMSE(k)=mean(abs(abssksi(:,k)));
             else 
            RMSE(k)=NaN;
             end
         end
    
        
        

Contact us at files@mathworks.com