DSP Guideの式8-2から「合成式」を実装しようとしています。そのため、周波数領域で時系列を再サンプリングできます。私が方程式を読む方法は、Nは出力点の数であり、0からN/2までのkのループが与えられた場合、私は元のサンプリングレートの2倍までしか再サンプリングできません。周波数ドメイン(FFT)で時系列を再サンプリング
私はRで簡単に実装しようとしましたが、結果は私が期待しているものに近いものではありません。私のコード:
input <- c(1:9)
nin <- 9
nout <- 17
b <-fft(input)
reals <- Re(b)/(nout/2)
imags <- Im(b)/(nout/2)
reals[1] <- reals[1]/2
reals[(nout/2)] <- reals[(nout/2)]/2
output <- c(1:nout)
for (i in 1:nout)
{
realSum <- 0
imagSum <- 0
for (k in 1:(nout/2))
{
angle <- 2 * pi * (k-1) * (i-1)/nout
realSum <- realSum + (reals[k] * cos(angle))
imagSum <- imagSum - (imags[k] * sin(angle))
}
output[i] <- (realSum + imagSum)
}
私の入力の場合は、私の期待出力が
ている間、私は出力[1] -0.7941176 1.5150954 0.7462716 1.5022387 1.6478971 1.8357487
2.4029773 2.1965426 3.1585254 2.6178195 3.7284660 3.3721128 3.8433588 4.6390705
[15] 3.4699088 6.3005605 2.8175240
に取得
[1] 1 2 3 4 5 6 7 8 9
(0.5秒に1秒、リサンプリングと言うでサンプリング)
[1] 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9
私は間違っていますか?