2013-06-23 1 views
1

Je me demande s'il existe un package qui nous permet d'utiliser le filtre Lanczos. J'ai trouvé d'autres filtres comme butterworth mais je cherche un filtre passe-bas Lanczos. Quelle est la différence entre le filtre Lanczos et le filtre Butterworth? Toute suggestion ou conseil est apprécié.Utilisation du filtre passe-bas lanczos dans le programme R

Merci.

+0

S'il vous plaît aidez-nous à vous aider en nous fournissant un exemple reproductible (c.-à-d. Le code et les données d'exemple), voir http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible- exemple pour plus de détails. –

Répondre

4

utilisant le Web, je trouve ce MATLAB implementation.

Si vous avez sauté la première partie (arguments chèque), il semble simple d'écrire son équivalent R.

#  Cf - Cut-off frequency  (default: half Nyquist) 
#  M - Number of coefficients (default: 100) 
lanczos_filter_coef <- function(Cf,M=100){ 
    lowpass_cosine_filter_coef <- function(Cf,M) 
    coef <- Cf*c(1,sin(pi*seq(M)*Cf)/(pi*seq(M)*Cf)) 
    hkcs <- lowpass_cosine_filter_coef(Cf,M) 
    sigma <- c(1,sin(pi*seq(M)/M)/(pi*seq(M)/M)) 
    hkB <- hkcs*sigma 
    hkA <- -hkB 
    hkA[1] <- hkA[1]+1 
    coef <- cbind(hkB, hkA) 
    coef 
} 

Pour le tester par exemple:

dT <- 1 
Nf <- 1/(2*dT) 
Cf <- Nf/2 
Cf <- Cf/Nf 
lanczos_filter_coef(Cf,5) 

       hkB   hkA 
[1,] 5.000000e-01 5.000000e-01 
[2,] 2.977755e-01 -2.977755e-01 
[3,] 1.475072e-17 -1.475072e-17 
[4,] -5.353454e-02 5.353454e-02 
[5,] -4.558222e-18 4.558222e-18 
[6,] 2.481571e-18 -2.481571e-18 

PS Je ne sais pas très bien Matlab I (utilisé il y a plusieurs années), alors j'ai utilisé this link Pour l'analogie R/Matlab. J'espère que quelqu'un avec plus de connaissances R/MATLAB/Scilab peut tester mon code.

+1

Belle trouvaille! Je recommande à l'OP d'effectuer un test de comparaison de votre code 'R' par rapport à Matlab natif pour voir si les résultats sont en accord. Bon travail pour lui de faire :-) –

+0

@ CarlWitthoft :) bonne idée ... – agstudy

Questions connexes