Mercurial > hg > aimmat
annotate aim-mat/modules/usermodule/pitchstrength/reduce_tilt.m @ 4:537f939baef0 tip
various bug fixes and changed copyright message
author | Stefan Bleeck <bleeck@gmail.com> |
---|---|
date | Tue, 16 Aug 2011 14:37:17 +0100 |
parents | |
children |
rev | line source |
---|---|
bleeck@4 | 1 function sig=reduce_tilt(sig,options) |
bleeck@4 | 2 |
bleeck@4 | 3 |
bleeck@4 | 4 plot_switch=1; |
bleeck@4 | 5 |
bleeck@4 | 6 lowpassfactor=100; % relationship between Samplefrequency and lowpassfrequency |
bleeck@4 | 7 |
bleeck@4 | 8 % shift all values that are zero at the beginning to the first |
bleeck@4 | 9 % positive value. This makes the lowpass continuous for high |
bleeck@4 | 10 % frequencies |
bleeck@4 | 11 sr=getsr(sig); |
bleeck@4 | 12 stip=getvalues(sig); |
bleeck@4 | 13 |
bleeck@4 | 14 indx=find(stip>0); |
bleeck@4 | 15 if ~isempty(indx) |
bleeck@4 | 16 first_non_zero=stip(indx(1)); |
bleeck@4 | 17 stip(1:indx(1))=first_non_zero; |
bleeck@4 | 18 stip=[ones(200,1)*first_non_zero;stip]; |
bleeck@4 | 19 end |
bleeck@4 | 20 s=signal(stip,sr); |
bleeck@4 | 21 s=reverse(s); |
bleeck@4 | 22 s2=lowpass(s,sr/lowpassfactor); |
bleeck@4 | 23 diff=s-s2; |
bleeck@4 | 24 |
bleeck@4 | 25 % s2=getpart(s2,0,getlength(sig)); |
bleeck@4 | 26 |
bleeck@4 | 27 |
bleeck@4 | 28 if plot_switch |
bleeck@4 | 29 figure(4) |
bleeck@4 | 30 clf |
bleeck@4 | 31 plot(s); |
bleeck@4 | 32 hold on |
bleeck@4 | 33 plot(s2,'r'); |
bleeck@4 | 34 plot(diff,'g') |
bleeck@4 | 35 axis([0 getnrpoints(sig) min(diff)-10 max(sig)+10]); |
bleeck@4 | 36 end |
bleeck@4 | 37 |
bleeck@4 | 38 diff=getpart(diff,0,getlength(sig)); |
bleeck@4 | 39 diff=reverse(diff); |
bleeck@4 | 40 |
bleeck@4 | 41 |
bleeck@4 | 42 % return value |
bleeck@4 | 43 sig=diff; |