function [final,RawData]=meshfunction(input)

% input=n x 3 matrix with Dff/Eyeposition/Velocity

temp=nan(size(input,1),30);  % lenght of matrix
RawData=cell(30,14);

for t=1:size(input,1)  %fill matrix with the velocity values for each frames according to the eyepos (for a given frame at which velocity was that eyepos reached)
    if input(t,2)>=-15 && input(t,2)<-14
    temp(t,1)=input(t,3);
    end
    if input(t,2)>=-14 && input(t,2)<-13
       temp(t,2)=input(t,3);
    end
    if input(t,2)>=-13 && input(t,2)<-12
       temp(t,3)=input(t,3);
    end
    if input(t,2)>=-12 && input(t,2)<-11
       temp(t,4)=input(t,3);
    end
    if input(t,2)>=-11 && input(t,2)<-10
       temp(t,5)=input(t,3);
    end
    if input(t,2)>=-10 && input(t,2)<-9
       temp(t,6)=input(t,3);
    end
    if input(t,2)>=-9 && input(t,2)<-8
       temp(t,7)=input(t,3);
    end
    if input(t,2)>=-8 && input(t,2)<-7
       temp(t,8)=input(t,3);
    end
    if input(t,2)>=-7 && input(t,2)<-6
       temp(t,9)=input(t,3);
    end
    if input(t,2)>=-6 && input(t,2)<-5
       temp(t,10)=input(t,3);
    end
    if input(t,2)>=-5 && input(t,2)<-4
       temp(t,11)=input(t,3);
    end
    if input(t,2)>=-4 && input(t,2)<-3
       temp(t,12)=input(t,3);
    end
    if input(t,2)>=-3 && input(t,2)<-2
       temp(t,13)=input(t,3);
    end
    if input(t,2)>=-2 && input(t,2)<-1
       temp(t,14)=input(t,3);
    end
    if input(t,2)>=-1 && input(t,2)<0
       temp(t,15)=input(t,3);
    end
    if input(t,2)>=0 && input(t,2)<1
       temp(t,16)=input(t,3);
    end
    if input(t,2)>=1 && input(t,2)<2
       temp(t,17)=input(t,3);
    end
    if input(t,2)>=2 && input(t,2)<3
       temp(t,18)=input(t,3);
    end
    if input(t,2)>=3 && input(t,2)<4
       temp(t,19)=input(t,3);
    end
    if input(t,2)>=4 && input(t,2)<5
       temp(t,20)=input(t,3);
    end
    if input(t,2)>=5 && input(t,2)<6
       temp(t,21)=input(t,3);
    end
    if input(t,2)>=6 && input(t,2)<7
       temp(t,22)=input(t,3);
    end
    if input(t,2)>=7 && input(t,2)<8
       temp(t,23)=input(t,3);
    end
    if input(t,2)>=8 && input(t,2)<9
       temp(t,24)=input(t,3);
    end
    if input(t,2)>=9 && input(t,2)<10
       temp(t,25)=input(t,3);
    end   
    if input(t,2)>=10 && input(t,2)<11
       temp(t,26)=input(t,3);
    end
    if input(t,2)>=11 && input(t,2)<12
       temp(t,27)=input(t,3);
    end       
    if input(t,2)>=12 && input(t,2)<13
       temp(t,28)=input(t,3);
    end
    if input(t,2)>=13 && input(t,2)<14
       temp(t,29)=input(t,3);
    end 
    if input(t,2)>=14 && input(t,2)<15
       temp(t,30)=input(t,3);
    end 
end

sorted1=nan(1,size(temp,1));
sorted2=nan(1,size(temp,1));
sorted3=nan(1,size(temp,1));
sorted4=nan(1,size(temp,1));
sorted5=nan(1,size(temp,1));
sorted6=nan(1,size(temp,1));
sorted7=nan(1,size(temp,1));
sorted8=nan(1,size(temp,1));
sorted9=nan(1,size(temp,1));
sorted10=nan(1,size(temp,1));
sorted11=nan(1,size(temp,1));
sorted12=nan(1,size(temp,1));
sorted13=nan(1,size(temp,1));
sorted14=nan(1,size(temp,1));

for e=1:size(temp,2) %for each eyepos
    for v=1:size(temp,1) %for each frame
        if temp(v,e)>=-3.5 && temp(v,e)<-3.0 %for each eyepos e and each velocity (sorted) will in the DF/F
           sorted1(1,v)=input(v,1); %sorted1 := most "left" velocity value of current eyepos e 
        else
           sorted1(1,v)=NaN;
        end
        
        if temp(v,e)>=-3.0 && temp(v,e)<-2.5
           sorted2(1,v)=input(v,1);
        else
           sorted2(1,v)=NaN;
        end        

        if temp(v,e)>=-2.5 && temp(v,e)<-2.0
           sorted3(1,v)=input(v,1);  
        else
           sorted3(1,v)=NaN;
        end
        
        if temp(v,e)>=-2.0 && temp(v,e)<-1.5
           sorted4(1,v)=input(v,1); 
        else
           sorted4(1,v)=NaN;
        end
        
        if temp(v,e)>=-1.5 && temp(v,e)<-1.0
           sorted5(1,v)=input(v,1); 
        else
           sorted5(1,v)=NaN;
        end    
        
        if temp(v,e)>=-1.0 && temp(v,e)<-0.5
           sorted6(1,v)=input(v,1);
        else
           sorted6(1,v)=NaN;
        end    
        
        if temp(v,e)>=-0.5 && temp(v,e)<0
           sorted7(1,v)=input(v,1);
        else
           sorted7(1,v)=NaN;
        end    

        if temp(v,e)>=0 && temp(v,e)<0.5
           sorted8(1,v)=input(v,1);  
        else
           sorted8(1,v)=NaN;
        end    
        
        if temp(v,e)>=0.5 && temp(v,e)<1.0
           sorted9(1,v)=input(v,1);
        else
           sorted9(1,v)=NaN;
        end    
        
        if temp(v,e)>=1.0 && temp(v,e)<1.5
           sorted10(1,v)=input(v,1);  
        else
           sorted10(1,v)=NaN;
        end    
       
        if temp(v,e)>=1.5 && temp(v,e)<2.0
           sorted11(1,v)=input(v,1);
        else
           sorted11(1,v)=NaN;
        end
        
        if temp(v,e)>=2.0 && temp(v,e)<2.5
           sorted12(1,v)=input(v,1);
        else
           sorted12(1,v)=NaN;
        end
        
        if temp(v,e)>=2.5 && temp(v,e)<3.0
           sorted13(1,v)=input(v,1); 
        else
           sorted13(1,v)=NaN;
        end
        
        if temp(v,e)>=3.0 && temp(v,e)<3.5
           sorted14(1,v)=input(v,1); 
        else
           sorted14(1,v)=NaN;
        end
        
    end % v end
    
    % here average before sorted is overwritten by new eyeposition
    final(e,1)=nanmean(sorted1); % final is n:m matrix: n=eyepos 1=most neg eyepos; m=velocity 1=most neg vel
    final(e,2)=nanmean(sorted2);    
    final(e,3)=nanmean(sorted3);
    final(e,4)=nanmean(sorted4);    
    final(e,5)=nanmean(sorted5);    
    final(e,6)=nanmean(sorted6);    
    final(e,7)=nanmean(sorted7);
    final(e,8)=nanmean(sorted8);    
    final(e,9)=nanmean(sorted9);    
    final(e,10)=nanmean(sorted10);
    final(e,11)=nanmean(sorted11);
    final(e,12)=nanmean(sorted12);    
    final(e,13)=nanmean(sorted13);    
    final(e,14)=nanmean(sorted14);
    
    
    %save RawData
    indxvec=find(~isnan(sorted1));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,1)={indxvec};    
    else
        RawData(e,1)={NaN};
    end

    indxvec=find(~isnan(sorted2));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,2)={indxvec};    
    else
        RawData(e,2)={NaN};
    end
    
    indxvec=find(~isnan(sorted3));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,3)={indxvec};    
    else
        RawData(e,3)={NaN};
    end    
    
    indxvec=find(~isnan(sorted4));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,4)={indxvec};    
    else
        RawData(e,4)={NaN};
    end    
    
    indxvec=find(~isnan(sorted5));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,5)={indxvec};    
    else
        RawData(e,5)={NaN};
    end

    indxvec=find(~isnan(sorted6));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,6)={indxvec};    
    else
        RawData(e,6)={NaN};
    end    
    
    indxvec=find(~isnan(sorted7));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,7)={indxvec};    
    else
        RawData(e,7)={NaN};
    end
    

    indxvec=find(~isnan(sorted8));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,8)={indxvec};    
    else
        RawData(e,8)={NaN};
    end    

    indxvec=find(~isnan(sorted9));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,9)={indxvec};    
    else
        RawData(e,9)={NaN};
    end    
    
    indxvec=find(~isnan(sorted10));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,10)={indxvec};    
    else
        RawData(e,10)={NaN};
    end

    indxvec=find(~isnan(sorted11));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,11)={indxvec};    
    else
        RawData(e,11)={NaN};
    end    

    indxvec=find(~isnan(sorted12));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,12)={indxvec};    
    else
        RawData(e,12)={NaN};
    end

    indxvec=find(~isnan(sorted13));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,13)={indxvec};    
    else
        RawData(e,13)={NaN};
    end    

    indxvec=find(~isnan(sorted14));
    if ~isempty(indxvec)
        for kk=1:size(indxvec,2) 
            indxvec(1,kk)=input(indxvec(1,kk),1);
        end
        RawData(e,14)={indxvec};    
    else
        RawData(e,14)={NaN};
    end    
    
end % e end

end %function end