Skip to content

Module_SignalProcessing_Transforms

cyclone_dll edited this page Jun 13, 2026 · 12 revisions

Location: Home / Signal processing / Transforms

Signal Processing Module

Transforms

The Vorcyc.Mathematics.SignalProcessing.Transforms namespace contains Dct1, Dct2, Dct3, Dct4, FastDct2, FastDct3, FastDct4, FastMdct, and Mdct for discrete cosine transform (DCT) types I–IV and modified DCT (MDCT), including FFT-based fast implementations. Each class provides direct, normalized, inverse, and normalized inverse transforms.

All types below are in namespace:Vorcyc.Mathematics.SignalProcessing.Transforms


📒 Contents


All types below are in Vorcyc.Mathematics.SignalProcessing.Transforms namespace。

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct1 class

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct1 represents discrete cosine transform type I (DCT-I).

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-I size.

Methods

1. Dct1 constructor

  • public Dct1(int dctSize)
    • Constructs Dct1 for given dctSize and precomputes DCT matrix.
    • Parameters:
      • dctSize: DCT-I size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Performs DCT-I.
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Performs normalized DCT-I.
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Performs inverse DCT-I.
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Performs normalized inverse DCT-I.
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses Dct1 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class Dct1Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create Dct1 instance
        var dct = new Dct1(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-I
        dct.Direct(input, output);
        Console.WriteLine("DCT-I Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-I
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-I Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-I
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-I Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-I
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-I Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct2 class

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct2 represents DCT-II.

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-II size.

Methods

1. Dct2 constructor

  • public Dct2(int dctSize)
    • Constructs Dct2 for given dctSize and precomputes DCT matrix.
    • Parameters:
      • dctSize: DCT-II size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Perform DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Perform normalized DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Perform inverse DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Perform normalized inverse DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses Dct2 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class Dct2Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create Dct2 instance
        var dct = new Dct2(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-II
        dct.Direct(input, output);
        Console.WriteLine("DCT-II Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-II
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-II Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-II
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-II Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-II
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-II Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct3 class

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct3 represents DCT-III.

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-III size.

Methods

1. Dct3 constructor

  • public Dct3(int dctSize)
    • Constructs Dct3 for given dctSize and precomputes DCT matrix.
    • Parameters:
      • dctSize: DCT-III size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Perform DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Perform normalized DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Perform inverse DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Perform normalized inverse DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses Dct3 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class Dct3Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create Dct3 instance
        var dct = new Dct3(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-III
        dct.Direct(input, output);
        Console.WriteLine("DCT-III Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-III
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-III Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-III
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-III Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-III
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-III Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct4 class

Vorcyc.Mathematics.SignalProcessing.Transforms.Dct4 represents DCT-IV.

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-IV size.

Methods

1. Dct4 constructor

  • public Dct4(int dctSize)
    • Constructs Dct4 for given dctSize and precomputes DCT matrix.
    • Parameters:
      • dctSize: DCT-IV size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Perform DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Perform normalized DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Perform inverse DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Perform normalized inverse DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses Dct4 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class Dct4Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create Dct4 instance
        var dct = new Dct4(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-IV
        dct.Direct(input, output);
        Console.WriteLine("DCT-IV Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-IV
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-IV Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-IV
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-IV Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-IV
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-IV Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.FastDct2 class

Vorcyc.Mathematics.SignalProcessing.Transforms.FastDct2 represents DCT-II.FFT-based DCT-II; faster for large DCT sizes.

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-II size.

Methods

1. FastDct2 constructor

  • public FastDct2(int dctSize)
    • Constructs FastDct2 for given dctSize.
    • Parameters:
      • dctSize: DCT-II size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Perform DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Perform normalized DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Perform inverse DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Perform normalized inverse DCT-II。
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses FastDct2 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class FastDct2Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create FastDct2 instance
        var dct = new FastDct2(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-II
        dct.Direct(input, output);
        Console.WriteLine("DCT-II Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-II
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-II Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-II
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-II Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-II
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-II Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.FastDct3 class

Vorcyc.Mathematics.SignalProcessing.Transforms.FastDct3 represents DCT-III.FFT-based DCT-III; faster for large sizes.

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-III size.

Methods

1. FastDct3 constructor

  • public FastDct3(int dctSize)
    • Constructs FastDct3 for given dctSize.
    • Parameters:
      • dctSize: DCT-III size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Perform DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Perform normalized DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Perform inverse DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Perform normalized inverse DCT-III。
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses FastDct3 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class FastDct3Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create FastDct3 instance
        var dct = new FastDct3(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-III
        dct.Direct(input, output);
        Console.WriteLine("DCT-III Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-III
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-III Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-III
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-III Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-III
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-III Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.FastDct4 class

Vorcyc.Mathematics.SignalProcessing.Transforms.FastDct4 represents DCT-IV.FFT-based DCT-IV; faster for large sizes.

Properties

1. Size

  • public int Size { get; }
    • Gets DCT-IV size.

Methods

1. FastDct4 constructor

  • public FastDct4(int dctSize)
    • Constructs FastDct4 for given dctSize.
    • Parameters:
      • dctSize: DCT-IV size.

2. Direct

  • public void Direct(float[] input, float[] output)
    • Perform DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Perform normalized DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Perform inverse DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Perform normalized inverse DCT-IV。
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses FastDct4 with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class FastDct4Example
{
    public static void Main()
    {
        // Define DCT size
        int dctSize = 8;

        // Create FastDct4 instance
        var dct = new FastDct4(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform DCT-IV
        dct.Direct(input, output);
        Console.WriteLine("DCT-IV Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized DCT-IV
        dct.DirectNorm(input, output);
        Console.WriteLine("Normalized DCT-IV Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse DCT-IV
        dct.Inverse(output, input);
        Console.WriteLine("Inverse DCT-IV Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse DCT-IV
        dct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse DCT-IV Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.FastMdct class

Vorcyc.Mathematics.SignalProcessing.Transforms.FastMdct represents modified discrete cosine transform (MDCT).FFT-based MDCT; faster for large sizes.

Methods

1. FastMdct constructor

  • public FastMdct(int dctSize)
    • Constructs FastMdct for given dctSize.
    • Parameters:
      • dctSize: MDCT size.

Code example

The following example uses FastMdct with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;

public class FastMdctExample
{
    public static void Main()
    {
        // Define MDCT size
        int dctSize = 8;

        // Create FastMdct instance
        var mdct = new FastMdct(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
        float[] output = new float[dctSize];

        // Perform MDCT
        mdct.Direct(input, output);
        Console.WriteLine("MDCT Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse MDCT
        mdct.Inverse(output, input);
        Console.WriteLine("Inverse MDCT Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Vorcyc.Mathematics.SignalProcessing.Transforms.Mdct class

Vorcyc.Mathematics.SignalProcessing.Transforms.Mdct represents modified discrete cosine transform (MDCT).

Properties

1. Size

  • public int Size { get; }
    • Gets MDCT size.

Methods

1. Mdct constructor

  • public Mdct(int dctSize, IDct dct = null)
    • Constructs Mdct for given dctSize.
    • Parameters:
      • dctSize: MDCT size.
      • dct: Internal DCT transformer (default Dct4).

2. Direct

  • public void Direct(float[] input, float[] output)
    • Performs MDCT. input length must be 2 * Mdct.Size; output length must be Mdct.Size.
    • Parameters:
      • input: Input data.
      • output: Output data.

3. DirectNorm

  • public void DirectNorm(float[] input, float[] output)
    • Performs normalized MDCT. Same length constraints.
    • Parameters:
      • input: Input data.
      • output: Output data.

4. Inverse

  • public void Inverse(float[] input, float[] output)
    • Performs inverse MDCT. input length must be Mdct.Size; output length must be 2 * Mdct.Size.
    • Parameters:
      • input: Input data.
      • output: Output data.

5. InverseNorm

  • public void InverseNorm(float[] input, float[] output)
    • Performs normalized inverse MDCT. Same length constraints.
    • Parameters:
      • input: Input data.
      • output: Output data.

Code example

The following example uses Mdct with comments:

using System;
using Vorcyc.Mathematics.SignalProcessing.Transforms;
public class MdctExample
{
    public static void Main()
    {
        // Define MDCT size
        int dctSize = 8;

        // Create Mdct instance
        var mdct = new Mdct(dctSize);

        // Define input data
        float[] input = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
        float[] output = new float[dctSize];

        // Perform MDCT
        mdct.Direct(input, output);
        Console.WriteLine("MDCT Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform normalized MDCT
        mdct.DirectNorm(input, output);
        Console.WriteLine("Normalized MDCT Output:");

        foreach (var value in output)
        {
            Console.WriteLine(value);
        }

        // Perform inverse MDCT
        mdct.Inverse(output, input);
        Console.WriteLine("Inverse MDCT Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }

        // Perform normalized inverse MDCT
        mdct.InverseNorm(output, input);
        Console.WriteLine("Normalized Inverse MDCT Output:");

        foreach (var value in input)
        {
            Console.WriteLine(value);
        }
    }
}

Language / 语言: English · 简体中文


Home


首页

Clone this wiki locally