fft
位於 stats
包(package)。 說明
使用快速算法 “Fast Fourier Transform” (FFT) 計算數組的離散傅裏葉變換 (DFT)。
用法
fft(z, inverse = FALSE)
mvfft(z, inverse = FALSE)
參數
z |
包含要轉換的值的實數或複數數組。不支持長向量。 |
inverse |
如果 |
值
當 z
是向量時,fft
計算並返回的值是 z
中的值序列的非歸一化單變量離散傅立葉變換。具體來說,y <- fft(z)
返回
對於 length(y)
。如果 inverse
為 TRUE
,則 替換為 。 其中 n =
當 z
包含數組時,fft
計算並返回多元(空間)變換。如果 inverse
是 TRUE
,則返回(非標準化)傅裏葉逆變換,即,如果 y <- fft(z)
,則 z
是 fft(y, inverse = TRUE) / length(y)
。
相比之下,mvfft
采用實數或複數矩陣作為參數,並返回形狀相似的矩陣,但每一列都由其離散傅立葉變換替換。這對於分析vector-valued係列很有用。
當要變換的序列的長度高度複合(即具有許多因子)時,FFT 速度最快。如果不是這種情況,則轉換可能需要很長時間來計算,並且會使用大量內存。
例子
x <- 1:4
fft(x)
fft(fft(x), inverse = TRUE)/length(x)
## Slow Discrete Fourier Transform (DFT) - e.g., for checking the formula
fft0 <- function(z, inverse=FALSE) {
n <- length(z)
if(n == 0) return(z)
k <- 0:(n-1)
ff <- (if(inverse) 1 else -1) * 2*pi * 1i * k/n
vapply(1:n, function(h) sum(z * exp(ff*(h-1))), complex(1))
}
relD <- function(x,y) 2* abs(x - y) / abs(x + y)
n <- 2^8
z <- complex(n, rnorm(n), rnorm(n))
## relative differences in the order of 4*10^{-14} :
summary(relD(fft(z), fft0(z)))
summary(relD(fft(z, inverse=TRUE), fft0(z, inverse=TRUE)))
來源
在 Singleton (1979) 中使用 Fortran 代碼的 C 翻譯。
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988). The New S Language. Wadsworth & Brooks/Cole.
Singleton, R. C. (1979). Mixed Radix Fast Fourier Transforms, in Programs for Digital Signal Processing, IEEE Digital Signal Processing Committee eds. IEEE Press.
Cooley, James W., and Tukey, John W. (1965). An algorithm for the machine calculation of complex Fourier series, Mathematics of Computation, 19(90), 297-301. doi:10.2307/2003354.
也可以看看
相關用法
- R formula 模型公式
- R factor.scope 計算在公式中添加或刪除時允許的更改
- R factanal 因子分析
- R friedman.test 弗裏德曼秩和檢驗
- R fitted 提取模型擬合值
- R ftable 扁平列聯表
- R ftable.formula 平麵列聯表的公式表示法
- R filter 時間序列的線性過濾
- R family 模型的族對象
- R formula.nls 從 nls 對象中提取模型公式
- R fivenum 圖基五數摘要
- R fisher.test 計數數據的 Fisher 精確檢驗
- R fligner.test 方差齊性的 Fligner-Killeen 檢驗
- R stlmethods STL 對象的方法
- R medpolish 矩陣的中值波蘭(穩健雙向分解)
- R naprint 調整缺失值
- R summary.nls 總結非線性最小二乘模型擬合
- R summary.manova 多元方差分析的匯總方法
- R nls.control 控製 nls 中的迭代
- R aggregate 計算數據子集的匯總統計
- R deriv 簡單表達式的符號和算法導數
- R kruskal.test Kruskal-Wallis 秩和檢驗
- R quade.test 四方測試
- R decompose 移動平均線的經典季節性分解
- R plot.stepfun 繪製階躍函數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Fast Discrete Fourier Transform (FFT)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。