matthiasm@8: function [period,rcf,period2] = getperiod(acf,wv,timesig,pmax,pmin,lowest) matthiasm@8: matthiasm@8: matthiasm@8: % using for loop approach to extract beat period matthiasm@8: matthiasm@8: pmax = round(pmax); matthiasm@8: pmin = round(pmin); matthiasm@8: matthiasm@8: rcf = zeros(1,pmax); matthiasm@8: matthiasm@8: matthiasm@8: if(~timesig) % timesig unknown, must be general state matthiasm@8: numelem = 4; matthiasm@8: matthiasm@8: for i=pmin:pmax-1, % maximum beat period matthiasm@8: for a=1:numelem, % number of comb elements matthiasm@8: for b=1-a:a-1, % gs using normalization of comb elements matthiasm@8: rcf(i) = rcf(i) + (acf(a*i+b)*wv(i))/(2*a-1); matthiasm@8: end matthiasm@8: end matthiasm@8: end matthiasm@8: matthiasm@8: else matthiasm@8: numelem = timesig; % timesig known must be context dependent state matthiasm@8: matthiasm@8: for i=pmin:pmax-1, % maximum beat period matthiasm@8: for a=1:numelem, % number of comb elements matthiasm@8: for b=1-a:a-1, % cds not normalizing comb elements matthiasm@8: rcf(i) = rcf(i) + acf(a*i+b)*wv(i); matthiasm@8: end matthiasm@8: end matthiasm@8: end matthiasm@8: matthiasm@8: end matthiasm@8: matthiasm@8: matthiasm@8: [val, period] = max(rcf); matthiasm@8: matthiasm@8: matthiasm@8: matthiasm@8: matthiasm@8: period = refineperiod(period,acf,timesig); matthiasm@8: matthiasm@8: matthiasm@8: while(period