Main Content

lp2bp

Transform lowpass analog filters to bandpass

Description

example

[bt,at] = lp2bp(b,a,Wo,Bw) transforms an analog lowpass filter prototype given by polynomial coefficients (specified by row vectors b and a) into a bandpass filter with center frequency Wo and bandwidth Bw. The input system must be an analog filter prototype.

[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw) converts the continuous-time state-space lowpass filter prototype (specified by matrices A, B, C, and D) to a bandpass filter with center frequency Wo and bandwidth Bw. The input system must be an analog filter prototype.

Examples

collapse all

Design a 14th-order lowpass Butterworth analog filter prototype.

n = 14;
[z,p,k] = buttap(n);

Convert the prototype to transfer function form. Display its magnitude and frequency responses.

[b,a] = zp2tf(z,p,k);
freqs(b,a)

Transform the prototype to a bandpass filter with a passband from 30 Hz to 100 Hz. Specify the center frequency and bandwidth in rad/s.

fl = 30;
fh = 100;

Wo = 2*pi*sqrt(fl*fh); % center frequency
Bw = 2*pi*(fh-fl); % bandwidth

[bt,at] = lp2bp(b,a,Wo,Bw);

Display the magnitude and frequency responses of the transformed filter.

freqs(bt,at)

Input Arguments

collapse all

Prototype numerator and denominator coefficients, specified as row vectors. b and a specify the coefficients of the numerator and denominator of the prototype in descending powers of s:

B(s)A(s)=b(1)sn++b(n)s+b(n+1)a(1)sm++a(m)s+a(m+1)

Data Types: single | double

Prototype state-space representation, specified as matrices. The state-space matrices relate the state vector x, the input u, and the output y through

x˙=Ax+Buy=Cx+Du

Data Types: single | double

Center frequency, specified as a scalar. For a filter with lower band edge w1 and upper band edge w2, use Wo = sqrt(w1*w2). Express Wo in units of rad/s.

Data Types: single | double

Bandwidth, specified as a scalar. For a filter with lower band edge w1 and upper band edge w2, use Bw = w2w1. Express Bw in units of rad/s.

Data Types: single | double

Output Arguments

collapse all

Transformed numerator and denominator coefficients, returned as row vectors.

Transformed state-space representation, returned as matrices.

Algorithms

lp2bp transforms analog lowpass filter prototypes with a cutoff angular frequency of 1 rad/s into bandpass filters with the desired bandwidth and center frequency. The transformation is one step in the digital filter design process for the butter, cheby1, cheby2, and ellip functions.

lp2bp is a highly accurate state-space formulation of the classic analog filter frequency transformation. Consider the state-space system

x˙=Ax+Buy=Cx+Du

where u is the input, x is the state vector, and y is the output. The Laplace transform of the first equation (assuming zero initial conditions) is

sX(s)=AX(s)+BU(s)

Now if a bandpass filter has center frequency ω0 and bandwidth Bw, the standard s-domain transformation is

s=Q(p2+1)/p

where Q = ω0/Bw and p = s0. Substituting this for s in the Laplace transformed state-space equation and considering the operator p as d/dt results in

Qx¨+Qx=A˙x+Bu˙

or

Qx¨A˙xBu˙=Qx

Now define

Qω˙=Qx

which, when substituted, leads to

Qx˙=Ax+Qω+Bu

The last two equations give equations of state. Write them in standard form and multiply the differential equations by ω0 to recover the time or frequency scaling represented by p and find state matrices for the bandpass filter:

Q=ω0Bw

At=ω0[AQeye(ma,m);eye(ma,m)zeros(ma,m)]

Bt=ω0[BQ;zeros(ma,n)]

Ct=[Czeros(mc,ma)]

Dt=D

where [ma,m]=size(A).

lp2bp can perform the transformation on two different linear system representations: transfer function form and state-space form. If the input to lp2bp is in transfer function form, the function transforms it into state-space form before applying this algorithm.

Extended Capabilities

Version History

Introduced before R2006a