Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.58 KB | None | 0 0
  1. #smoothing filter
  2. L= filt;
  3. a=1;
  4. b=1/(L)*ones(1,L);
  5.  
  6. kdc = sum(b) / sum(a);
  7. si = fliplr(cumsum(fliplr(b - kdc * a)));
  8.  
  9. #test
  10. #rpmvalues=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
  11.  
  12. # if 'test' = 0 it uses my own filter, 'test' = 1 or 2 are used for comparison
  13. # if = 1 it uses the 'filter' function (the function used inside filtfilt), so this is only forward filtering
  14. # if = 2 it uses the 'filtfilt' function
  15. test = 0;
  16. if(test==0)
  17.   lrefl = 3 * (L - 1);
  18.   v = [2*rpmvalues(1)-rpmvalues((lrefl+1):-1:2), rpmvalues ,2*rpmvalues(end)-rpmvalues((end-1):-1:end-lrefl)];
  19.   z = zeros(1,length(v)+1);
  20.   k=1;
  21.   while(k<=L)
  22.     z(k)=si(k);
  23.     k+=1;
  24.   endwhile
  25.   z(1)=[];
  26.   #forward filter
  27.   #si(1) = [];
  28.   #rpmfiltered = filter(b,a,v,si*v(1));
  29.  
  30.   rpmfiltered = zeros(1,length(rpmvalues));
  31.   m=1;
  32.   while(m<=length(v))
  33.     i=1;
  34.     summation=0;
  35.     while(i<=L&&m-i+1>=1)
  36.       summation += b(i)*v(m-i+1);
  37.       i+=1;
  38.     endwhile
  39.     rpmfiltered(m) = summation + z(m-i+2);
  40.     m+=1;
  41.   endwhile
  42.   #reverse filter
  43.  
  44.   rpmfiltered = fliplr(rpmfiltered);
  45.   m=1;
  46.   while(m<=length(rpmfiltered))
  47.     i=1;
  48.     summation=0;
  49.     while(i<=L&&m-i+1>=1)
  50.       summation += b(i)*rpmfiltered(m-i+1);
  51.       i+=1;
  52.     endwhile
  53.     rpmfiltered(m) = summation + z(m-i+2);
  54.     m+=1;
  55.   endwhile
  56.   rpmfiltered = fliplr(rpmfiltered);
  57.  
  58.   rpmfiltered = rpmfiltered((lrefl+1):(length(rpmvalues)+lrefl));
  59.  
  60. elseif(test==1)
  61.   si(1) = [];
  62.   rpmfiltered = filter(b,a,rpmvalues,si);
  63. elseif(test==2)
  64.   rpmfiltered=filtfilt(b,a,rpmvalues);
  65. endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement