2

Lanczos フィルターを使用できるパッケージがあるかどうか疑問に思っています。バターワースなどの他のフィルターを見つけましたが、ランチョスのローパスフィルターを探しています。

Lanczos フィルターとバターワース フィルターの違いは何ですか? 提案やヒントをいただければ幸いです。

ありがとう。

4

2 に答える 2

4

Web を使用して、このMATLAB 実装を見つけました。

最初の部分 (引数のチェック) をスキップした場合、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
}

たとえば、テストするには:

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私はMATLAB(何年も前に使用していた)をよく知らないので 、R/MATLABの類推のためにこのリンクを使用しました。R/MATLAB/Scilab の知識が豊富な人が私のコードをテストできることを願っています。

于 2013-06-23T19:45:01.363 に答える