Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #smoothing filter
- L= filt;
- a=1;
- b=1/(L)*ones(1,L);
- kdc = sum(b) / sum(a);
- si = fliplr(cumsum(fliplr(b - kdc * a)));
- #test
- #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]
- # if 'test' = 0 it uses my own filter, 'test' = 1 or 2 are used for comparison
- # if = 1 it uses the 'filter' function (the function used inside filtfilt), so this is only forward filtering
- # if = 2 it uses the 'filtfilt' function
- test = 0;
- if(test==0)
- lrefl = 3 * (L - 1);
- v = [2*rpmvalues(1)-rpmvalues((lrefl+1):-1:2), rpmvalues ,2*rpmvalues(end)-rpmvalues((end-1):-1:end-lrefl)];
- z = zeros(1,length(v)+1);
- k=1;
- while(k<=L)
- z(k)=si(k);
- k+=1;
- endwhile
- z(1)=[];
- #forward filter
- #si(1) = [];
- #rpmfiltered = filter(b,a,v,si*v(1));
- rpmfiltered = zeros(1,length(rpmvalues));
- m=1;
- while(m<=length(v))
- i=1;
- summation=0;
- while(i<=L&&m-i+1>=1)
- summation += b(i)*v(m-i+1);
- i+=1;
- endwhile
- rpmfiltered(m) = summation + z(m-i+2);
- m+=1;
- endwhile
- #reverse filter
- rpmfiltered = fliplr(rpmfiltered);
- m=1;
- while(m<=length(rpmfiltered))
- i=1;
- summation=0;
- while(i<=L&&m-i+1>=1)
- summation += b(i)*rpmfiltered(m-i+1);
- i+=1;
- endwhile
- rpmfiltered(m) = summation + z(m-i+2);
- m+=1;
- endwhile
- rpmfiltered = fliplr(rpmfiltered);
- rpmfiltered = rpmfiltered((lrefl+1):(length(rpmvalues)+lrefl));
- elseif(test==1)
- si(1) = [];
- rpmfiltered = filter(b,a,rpmvalues,si);
- elseif(test==2)
- rpmfiltered=filtfilt(b,a,rpmvalues);
- endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement