类 FastSineTransformer
java.lang.Object
org.hipparchus.transform.FastSineTransformer
- 所有已实现的接口:
-
Serializable
,RealTransformer
实现了用于一维实数数据集变换的快速正弦变换。有关参考,请参阅James S. Walker的快速傅立叶变换第3章(ISBN 0849371635)。
离散正弦变换有几种变体。当前的实现对应于DST-I,具有各种规范化约定,这些约定由参数DstNormalization
指定。值得注意的是,无论规范如何,要转换的数据集的第一个元素必须为零。
DST-I等效于数据系列的奇扩展的DFT。更确切地说,如果x0,…,xN-1是要进行正弦变换的数据集,则扩展的数据集x0#,…,x2N-1#定义如下
- x0# = x0 = 0,
- xk# = xk if 1 ≤ k < N,
- xN# = 0,
- xk# = -x2N-k if N + 1 ≤ k < 2N.
然后,实数数据集x0, …, xN-1的标准DST-I等于扩展数据集x0#, …, x2N-1#的DFT的前N个元素的一半乘以i(纯虚数)
yn = (i / 2) ∑k=02N-1 xk# exp[-2πi nk / (2N)] k = 0, …, N-1.
将离散正弦变换实现为快速正弦变换要求数据的长度为2的幂。此外,它隐含地假定采样函数为奇函数。特别地,数据集的第一个元素必须为0,在采样后在transform(UnivariateFunction, double, double, int, TransformType)
中强制执行。
- 另请参阅:
-
构造器概要
-
方法概要
修饰符和类型方法说明protected double[]
fst
(double[] f) 执行FST算法(包括反向)。double[]
transform
(double[] f, TransformType type) 返回指定实数数据集的(正向、反向)变换。double[]
transform
(UnivariateFunction f, double min, double max, int n, TransformType type) 返回指定实函数在指定区间上采样后的(正向、反向)变换。
-
构造器详细资料
-
FastSineTransformer
创建此类的新实例,具有各种规范化约定。- 参数:
-
normalization
- 要应用于转换数据的规范化类型
-
-
方法详细资料
-
transform
返回指定实数数据集的(正向、反向)变换。要求指定数据集的第一个元素为0
。- 指定者:
-
transform
在接口中RealTransformer
- 参数:
-
f
- 要转换的实数数据数组(信号) -
type
- 要执行的变换类型(正向、反向) - 返回:
- 实数变换后的数组(频谱)
- 抛出:
-
MathIllegalArgumentException
- 如果数据数组的长度不是2的幂,或数据数组的第一个元素不为零
-
transform
返回指定实函数在指定区间上采样后的(正向、反向)变换。此实现强制f(x) = 0.0
在x = 0.0
处。- 指定者:
-
transform
在接口中RealTransformer
- 参数:
-
f
- 要采样和转换的函数 -
min
- 区间的(包含)下界 -
max
- 区间的(不包含)上界 -
n
- 样本点的数量 -
type
- 要执行的变换类型(正向、反向) - 返回:
- 实数变换后的数组
- 抛出:
-
MathIllegalArgumentException
- 如果下界大于或等于上界 -
MathIllegalArgumentException
- 如果样本点数量为负 -
MathIllegalArgumentException
- 如果样本点数量不是2的幂
-
fst
执行FST算法(包括反向)。要求数据集的第一个元素为0
。- 参数:
-
f
- 要转换的实数数据数组 - 返回:
- 实数变换后的数组
- 抛出:
-
MathIllegalArgumentException
- 如果数据数组的长度不是2的幂,或数据数组的第一个元素不为零
-