# allpassshiftc

Allpass filter for complex shift transformation

## Syntax

`[AllpassNum,AllpassDen] = allpassshiftc(Wo,Wt)[AllpassNum,AllpassDen] = allpassshiftc(0,0.5)[AllpassNum,AllpassDen] = allpassshiftc(0,-0.5)`

## Description

`[AllpassNum,AllpassDen] = allpassshiftc(Wo,Wt)` returns the numerator, `AllpassNum`, and denominator, `AllpassDen`, vectors of the allpass mapping filter for performing a complex frequency shift of the frequency response of the digital filter by an arbitrary amount.

`[AllpassNum,AllpassDen] = allpassshiftc(0,0.5)` calculates the allpass filter for doing the Hilbert transformation, a 90 degree counterclockwise rotation of an original filter in the frequency domain.

`[AllpassNum,AllpassDen] = allpassshiftc(0,-0.5)` calculates the allpass filter for doing an inverse Hilbert transformation, i.e. a 90 degree clockwise rotation of an original filter in the frequency domain.

## Examples

Design the allpass filter precisely rotating the whole filter by the amount defined by the location of the selected feature from an original filter, `W`o`=0.5`, and its required position in the target filter, `W`t`=0.25`:

```Wo = 0.5; Wt = 0.25; [AllpassNum, AllpassDen] = allpassshiftc(Wo, Wt);```

Calculate the frequency response of the mapping filter in the full range:

`[h, f] = freqz(AllpassNum, AllpassDen, 'whole');`

## Arguments

VariableDescription
`Wo`

Frequency value to be transformed from the prototype filter

`Wt`

Desired frequency location in the transformed target filter

`AllpassNum`

Numerator of the mapping filter

`AllpassDen`

Denominator of the mapping filter

Frequencies must be normalized to be between -1 and 1, with 1 corresponding to half the sample rate.

## References

Oppenheim, A.V., R.W. Schafer and J.R. Buck, Discrete-Time Signal Processing, Prentice-Hall International Inc., 1989.

Dutta-Roy, S.C. and B. Kumar, "On Digital Differentiators, Hilbert Transformers, and Half-band Low-pass Filters," IEEE® Transactions on Education, vol. 32, pp. 314-318, August 1989.