类 FastSineTransformer

java.lang.Object
org.hipparchus.transform.FastSineTransformer
所有已实现的接口:
Serializable, RealTransformer

public class FastSineTransformer extends Object implements RealTransformer, Serializable
实现了用于一维实数数据集变换的快速正弦变换。有关参考,请参阅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)中强制执行。

另请参阅:
  • 构造器详细资料

    • FastSineTransformer

      public FastSineTransformer(DstNormalization normalization)
      创建此类的新实例,具有各种规范化约定。
      参数:
      normalization - 要应用于转换数据的规范化类型
  • 方法详细资料

    • transform

      public double[] transform(double[] f, TransformType type)
      返回指定实数数据集的(正向、反向)变换。要求指定数据集的第一个元素为0
      指定者:
      transform 在接口中 RealTransformer
      参数:
      f - 要转换的实数数据数组(信号)
      type - 要执行的变换类型(正向、反向)
      返回:
      实数变换后的数组(频谱)
      抛出:
      MathIllegalArgumentException - 如果数据数组的长度不是2的幂,或数据数组的第一个元素不为零
    • transform

      public double[] transform(UnivariateFunction f, double min, double max, int n, TransformType type)
      返回指定实函数在指定区间上采样后的(正向、反向)变换。此实现强制f(x) = 0.0x = 0.0处。
      指定者:
      transform 在接口中 RealTransformer
      参数:
      f - 要采样和转换的函数
      min - 区间的(包含)下界
      max - 区间的(不包含)上界
      n - 样本点的数量
      type - 要执行的变换类型(正向、反向)
      返回:
      实数变换后的数组
      抛出:
      MathIllegalArgumentException - 如果下界大于或等于上界
      MathIllegalArgumentException - 如果样本点数量为负
      MathIllegalArgumentException - 如果样本点数量不是2的幂
    • fst

      protected double[] fst(double[] f) throws MathIllegalArgumentException
      执行FST算法(包括反向)。要求数据集的第一个元素为0
      参数:
      f - 要转换的实数数据数组
      返回:
      实数变换后的数组
      抛出:
      MathIllegalArgumentException - 如果数据数组的长度不是2的幂,或数据数组的第一个元素不为零