Skip to content

Hilbert

Overview

6th order Hilbert transform

Discussion

This subsystem has 2 inputs and 2 outputs. The input pin is named 'in' and the output pins are named 'out1' and 'out2'. The input pins can be of arbitrary dimension and the size of the output pins equal the size of the input pins. The module operates on multichannel signals. The filters are designed so that \(\angle(out1)-\angle(out2) = 90~degrees.\) Each filter is a cascade of 6 1st order allpass filters. Internally, pairs of first order allpass filters are combined and implemented as second order Biquad stages.

The subsystem requires two scratch buffers. The size of the scratch buffers equals the size of the input.

Module Pack

Advanced

ClassID

classID =

Type Definition

typedef struct _ModuleHilbert
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
} ModuleHilbertClass;

Pins

Input Pins

Name inReal
Description Audio Input for real valued signals
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real
Name inImag
Description Audio Input for imaginary valued signals
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real

Output Pins

Name outReal
Description Audio output for real valued signals
Data Type float
Name outImag
Description Audio output for imaginary valued signals
Data Type float

Scratch Pins

Channel Count 1
Block size 32
Sample rate 48000

Matlab Usage

File Name: hilbert_subsystem.m 
 SYS=hilbert_subsystem(NAME) 
 Creates a 2-input 2-output module which implements a 12th order Hilbert 
 transform.  Arguments: 
    NAME - name of the module. 

Copyright (c) 2026 DSP Concepts, Inc.