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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。