(To be removed) Design Hilbert transform IIR filter

hilbiir will be removed in a future release. To design a Hilbert transform filter, use
the `fdesign.hilbert`

object.

`hilbiir`

hilbiir(ts)

hilbiir(ts,dly)

hilbiir(ts,dly,bandwidth)

hilbiir(ts,dly,bandwidth,tol)

[num,den] = hilbiir(...)

[num,den,sv] = hilbiir(...)

[a,b,c,d] = hilbiir(...)

[a,b,c,d,sv] = hilbiir(...)

The function `hilbiir`

designs a Hilbert transform filter. The output is
either

A plot of the filter's impulse response, or

A quantitative characterization of the filter, using either a transfer function model or a state-space model

An ideal Hilbert transform filter has the transfer function
`H(s) = -jsgn(s)`

, where `sgn(.)`

is the signum
function (`sign`

in MATLAB). The impulse response of the
Hilbert transform filter is

$$h(t)=\frac{1}{\pi t}$$

Because the Hilbert transform filter is a noncausal filter, the `hilbiir`

function introduces a group delay, `dly`

. A Hilbert transform filter with this
delay has the impulse response

$$h(t)=\frac{1}{\pi (t-\text{dly})}$$

The filter design is an approximation. If you provide the filter's group delay as an input argument, these two suggestions can help improve the accuracy of the results:

Choose the sample time

`ts`

and the filter's group delay`dly`

so that`dly`

is at least a few times larger than`ts`

and`rem(dly,ts) = ts/2`

. For example, you can set`ts`

to 2`*dly/N`

, where`N`

is a positive integer.At the point t =

`dly`

, the impulse response of the Hilbert transform filter can be interpreted as`0`

,`-Inf`

, or`Inf`

. If`hilbiir`

encounters this point, it sets the impulse response there to zero. To improve accuracy, avoid the point t =`dly`

.

Each of these syntaxes produces a plot of the impulse response of the filter that the
`hilbiir`

function designs, as well as the impulse response of a corresponding
ideal Hilbert transform filter.

`hilbiir`

plots the impulse response of a
fourth-order digital Hilbert transform filter with a one-second group delay. The sample time is
2/7 seconds. In this particular design, the tolerance index is 0.05. The plot also displays the
impulse response of the ideal Hilbert transform filter with a one-second group delay.

`hilbiir(ts)`

plots the impulse response of a
fourth-order Hilbert transform filter with a sample time of `ts`

seconds and a
group delay of `ts*7/2`

seconds. The tolerance index is 0.05. The plot also
displays the impulse response of the ideal Hilbert transform filter having a sample time of
`ts`

seconds and a group delay of `ts*7/2`

seconds.

`hilbiir(ts,dly)`

is the same as the syntax above,
except that the filter's group delay is `dly`

for both the ideal filter and the
filter that `hilbiir`

designs. See Choosing a Group Delay Parameter above for
guidelines on choosing `dly`

.

`hilbiir(ts,dly,bandwidth)`

is the same as the syntax
above, except that `bandwidth`

specifies the assumed bandwidth of the input
signal and that the filter design might use a compensator for the input signal. If
`bandwidth`

= 0 or
`bandwidth`

> 1/(2`*ts`

),
`hilbiir`

does not use a compensator.

`hilbiir(ts,dly,bandwidth,tol)`

is the same as the
syntax above, except that `tol`

is the tolerance index. If
`tol`

< 1, the order of the filter is determined by

$$\frac{\text{truncated-singular-value}}{\text{maximum-singular-value}}<\text{tol}$$

If `tol`

> 1, the order of the filter is `tol`

.

Each of these syntaxes produces quantitative information about the filter that
`hilbiir`

designs, but does *not* produce a plot. The input
arguments for these syntaxes (if you provide any) are the same as those described in Syntaxes for Plots.

`[num,den] = hilbiir(...)`

outputs the numerator and
denominator of the IIR filter's transfer function.

`[num,den,sv] = hilbiir(...)`

outputs the numerator
and denominator of the IIR filter's transfer function, and the singular values of the Hankel
matrix that `hilbiir`

uses in the computation.

`[a,b,c,d] = hilbiir(...)`

outputs the discrete-time
state-space model of the designed Hilbert transform filter. `a`

,
`b`

, `c`

, and `d`

are matrices.

`[a,b,c,d,sv] = hilbiir(...)`

outputs the
discrete-time state-space model of the designed Hilbert transform filter, and the singular
values of the Hankel matrix that `hilbiir`

uses in the computation.

For an example using the function's default values, type one of the following commands at the MATLAB prompt.

hilbiir [num,den] = hilbiir

The `hilbiir`

function calculates the impulse response of the ideal Hilbert
transform filter response with a group delay. It fits the response curve using a singular-value
decomposition method. See the book by Kailath [1].

[1] Kailath, Thomas, *Linear Systems*,
Englewood Cliffs, NJ, Prentice-Hall, 1980.