Chung-Kennedy Filter

This returns a wave which is filtered according to the method of Chung & Kennedy, J. Neurocience Methods, 1991.

function /wave ChungKennedy(w,mm,kk,pp[,pis])
    wave w // Data.  
    variable mm // Analysis window length.  
    variable kk // Number of filters.  
    variable pp // An exponent.  
    wave pis // The weights (pi_i) for the filters.  Has length kk.  
        make /free/n=(kk) pis = 1
    variable n = numpnts(w)
    make /free/n=(n,kk*2) estimates
    estimates[][0,kk] = mean(w,pnt2x(w,p-2^(q+1)),pnt2x(w,p-1)) // Forwards.  
    estimates[][kk,] = mean(w,pnt2x(w,p+1),pnt2x(w,p+2^(q+1-kk))) // Backwards.  
    make /free/n=(n,kk*2) weights
    make /free/n=(n,kk,mm) forwards = (w[p-r]-estimates[p-r][q])^2
    make /free/n=(n,kk,mm) backwards = (w[p+r]-estimates[p+r][q+kk])^2
    matrixop /free forwards = powR(sumbeams(forwards),-pp)
    matrixop /free backwards = powR(sumbeams(backwards),-pp)
    weights[][0,kk] = forwards[p][q]*pis[q]
    weights[][kk,] = backwards[p][q-kk]*pis[q-kk]
    // Normalize.  
    matrixop /free sums = sumrows(weights)
    weights /= sums[p]
    matrixop /free result = sumrows(estimates * weights)
    return result
Thanks! But see

Biophys J. 2008 January 1; 94(1): 306–319.
Published online 2007 September 7. doi: 10.1529/biophysj.107.110601
PMCID: PMC2134886
A Comparison of Step-Detection Methods: How Well Can You Do?

Brian C. Carter,* Michael Vershinin,† and Steven P. Gross*†

for a discussion of different methods.

John Bechhoefer
Department of Physics
Simon Fraser University
Burnaby, BC, Canada




Igor Pro 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More