Class FloatDHT_3D


  • public class FloatDHT_3D
    extends java.lang.Object
    Computes 3D Discrete Hartley Transform (DHT) of real, single precision data. The sizes of all three dimensions can be arbitrary numbers. This is a parallel implementation optimized for SMP systems.

    Part of code is derived from General Purpose FFT Package written by Takuya Ooura (http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html)
    Author:
    Piotr Wendykier (piotr.wendykier@gmail.com)
    • Constructor Summary

      Constructors 
      Constructor Description
      FloatDHT_3D​(int slices, int rows, int columns)
      Creates new instance of FloatDHT_3D.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void forward​(float[] a)
      Computes the 3D real, forward DHT leaving the result in a.
      void forward​(float[][][] a)
      Computes the 3D real, forward DHT leaving the result in a.
      void inverse​(float[][][] a, boolean scale)
      Computes the 3D real, inverse DHT leaving the result in a.
      void inverse​(float[] a, boolean scale)
      Computes the 3D real, inverse DHT leaving the result in a.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • FloatDHT_3D

        public FloatDHT_3D​(int slices,
                           int rows,
                           int columns)
        Creates new instance of FloatDHT_3D.
        Parameters:
        slices - number of slices
        rows - number of rows
        columns - number of columns
    • Method Detail

      • forward

        public void forward​(float[] a)
        Computes the 3D real, forward DHT leaving the result in a. The data is stored in 1D array addressed in slice-major, then row-major, then column-major, in order of significance, i.e. the element (i,j,k) of 3D array x[slices][rows][columns] is stored in a[i*sliceStride + j*rowStride + k], where sliceStride = rows * columns and rowStride = columns.
        Parameters:
        a - data to transform
      • forward

        public void forward​(float[][][] a)
        Computes the 3D real, forward DHT leaving the result in a. The data is stored in 3D array.
        Parameters:
        a - data to transform
      • inverse

        public void inverse​(float[] a,
                            boolean scale)
        Computes the 3D real, inverse DHT leaving the result in a. The data is stored in 1D array addressed in slice-major, then row-major, then column-major, in order of significance, i.e. the element (i,j,k) of 3D array x[slices][rows][columns] is stored in a[i*sliceStride + j*rowStride + k], where sliceStride = rows * columns and rowStride = columns.
        Parameters:
        a - data to transform
        scale - if true then scaling is performed
      • inverse

        public void inverse​(float[][][] a,
                            boolean scale)
        Computes the 3D real, inverse DHT leaving the result in a. The data is stored in 3D array.
        Parameters:
        a - data to transform
        scale - if true then scaling is performed