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

vslicesplot_SA(model1,model2,model3,model4,avail,what,v,Z,mtot,vmax,Tmax,Pmax,deltav,deltaT,tit)
function vslicesplot_SA(model1,model2,model3,model4,avail,what,v,Z,mtot,vmax,Tmax,Pmax,deltav,deltaT,tit)
%vslicesplot_SA
%vslicesplot_SA(model1,model2,model3,model4,avail,what,v,Z,mtot,vmax,Tmax,P
%max,deltav,deltaT,tit)
%this function plots slices for Slope ability as a function of speed and
%torque for given models, avail, what, speed matrix, Z, total weight, maximum values for speed, torque and power
%should be given, and also speedstep and torquestep, a title and a colormap
%are inputs.


% make a new grid with max speed, max Torque and Speed step and Torque step
vgrid = v;
Tgrid = 0:deltaT:Tmax;

for k=1:length(vgrid)
hulp(((k-1)*(length(Tgrid))+1):k*length(Tgrid),:)=[vgrid(k).*ones(length(Tgrid),1) Tgrid'];
end
Xnew = hulp;
if isstruct(model1)
Ynew(:,1) = simlssvm(model1,Xnew);
else
Ynew(:,1)=Xnew(:,1); %nonsense input, is never displayed    
end
if isstruct(model2)
Ynew(:,2) = simlssvm(model2,Xnew);
else
Ynew(:,2)=Xnew(:,1);
end
if isstruct(model3)
Ynew(:,3) = simlssvm(model3,Xnew);
else
Ynew(:,3)=Xnew(:,1);
end
if isstruct(model4)
Ynew(:,4) = simlssvm(model4,Xnew);
else
Ynew(:,4)=Xnew(:,1);
end

%Remove point above the powerlimit and the torquelimit
for i=1:length(Xnew)
    if Xnew(i,1)/3.6*Xnew(i,2)/Z>Pmax
            Ynew(i,:)=NaN;
    end
    if Xnew(i,2)>Tmax
            Ynew(i,:)=NaN;
    end
end

for i=1:length(Xnew)
    for j=1:4;
    if Ynew(i,j)>120
            Ynew(i,j)=NaN;
    end
    end
end

%omzetten in percent van de helling die men kan oprijden...
g=9.81;
for i=1:length(Xnew)
for j=1:4
    SA(i,j)=tan(asin(Ynew(i,j)/(mtot*g)))*100;
end
end

% doorsnedes per snelheid
for i=1:length(vgrid)
    Tslice(:,i)=Xnew((i-1)*length(Tgrid)+1:i*length(Tgrid),2);
    vslice(:,i)=Xnew((i-1)*length(Tgrid)+1:i*length(Tgrid),1);
   for j=1:4
    SAslice(:,i,j)=SA((i-1)*length(Tgrid)+1:i*length(Tgrid),j);
   end
end

colors=['y','g','b','r'];
amodes=['ZA '
        'MAe'
        'MAn'
        'MAp'];
amodesstr=cellstr(amodes);

if max(v)>vmax
    errordlg(['Elements of v must be smaller than ', num2str(vmax)],'Bad Input','modal')
end
%doorsnede voor k km/h    

hold on
set(text,'fontsize',14)
for i=1:length(v);
    k=round(2.5*max(Tslice)/max(v)*i*1/deltav);
    l=round(k);
    %index=v(i)*1/deltav+1;
    for j=1:4
        if what(j)==1
            if avail(j)==0
                errordlg(['The ',amodes(j,:),' mode is not available for this pedelec'],'Bad Input','modal');
            else
                plot(Tslice(:,i),SAslice(:,i,j),colors(j))
                text(Tslice(k,i),SAslice(k,i,j),['\leftarrowv_{',amodes(j,:),'}= ',num2str(vslice(1,i)),'km/h'],'color',colors(j));
                %text(Tslice(k,1),Fslice(k,1,j),['\leftarrowv_{NA}= ',num2str(vslice(1,i)),'km/h'],'color',colors(j));
            end
        end
    end
end
title(tit,'fontsize',14);
ylabel('Slope [%]');
xlabel('Torque [Nm]');
%vektor(i,:)=[tekstZA(i) tekstMAp(i) titel(i) x(i) y(i)];
%set(vektor(k,:),'fontsize',14);
slicemax=max(SA)+1;
axis([0 Tmax 0 max(slicemax)]);
hold off
end

% 

Contact us at files@mathworks.com