2013-06-23 3 views
1

Lanczos 필터를 사용할 수있는 패키지가 있는지 궁금합니다. 버터 워스와 같은 다른 필터를 찾았지만 Lanczos 로우 패스 필터를 찾고 있습니다.R 프로그램에서 lanczos 로우 패스 필터 사용

Lanczos 필터와 버터 워스 필터의 차이점은 무엇입니까? 어떤 제안이나 힌트를 주셔서 감사합니다.

감사합니다. 첫 번째 부분 (인수 확인), 그것의 R 동등한를 작성하는 간단한 보이는 생략하는 경우 웹을 사용

+0

재현 할 수있는 예제 (예 : 코드 및 예제 데이터)를 제공하여 도와 드리겠습니다. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible- 자세한 내용은 예제를 참조하십시오. –

답변

4

나는이 MATLAB implementation.

을 찾을 수 있습니다. 내가 잘 MATLAB을 모르는

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 (이것은 몇 년 전 사용), 그래서 나는 R/MATLAB 비유를 들어 this link을 사용 :

#  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 
} 

예를 들어 테스트합니다. 더 많은 R/MATLAB/Scilab 지식을 가진 사람이 제 코드를 테스트 할 수 있기를 바랍니다.

+1

니스 찾기! OP가'R' 코드와 네이티브 Matlab의 비교 테스트를 실행하여 결과가 일치하는지 확인하는 것이 좋습니다. 그에게 좋은 숙제 :-) –

+0

@CarlWitthoft :) 좋은 생각 ... – agstudy