Mathematica 9 is now available
Student Support Forum
Student Support Forum: 'Signals and Systems and sampling rates' topicStudent Support Forum > General > "Signals and Systems and sampling rates"

< Previous CommentHelp | Reply To Comment | Reply To Topic
Author Comment/Response
Aaron Honecker
09/13/00 1:52pm

>This may be trivially obvious, but I can't find it in the documentation. I am using the Signals and Systems package to filter a signal.
>I am given:
> (1) a text file with the sampled signal ''as is''
> (2) the sampling rate at which the signal was sampled
>I would like to:
> (1) filter the signal with a bandpass filter of my choice (Butterworth, Bessel, ...), with specified cutoff frequencies.
> (1) how do I tell Mathematica the rate at which the signal was sampled?
> (2) how do I build a filter with arbitrary cutoff frequencies? I was going to use FilterSpecifications[] with Passband and Stopband, but then I appear to lack the answer to (1).
>   --Paul

Typically to design a digital filter, you start by designing an analog filter that meets the
desired specifications. Then through Impulse invariance or the Bilinear transformation
you convert the analog filter into a digital filter by specifying the sampling frequency.

Both the ImpulseInvariance and BilinearTransformation commands in the Signal and Systems
application allow for the specification of the sampling frequency.

To allow for an arbitrary cutoff frequency you will want to used a delayed assignment to
specify the filter as a function of the cutoff frequency. Then using that function, you
can specify the desired cutoff frequency and then convert the the analog prototype filter
to a digital filter.

Here is a generalization of an example in the online documentation:
This example allows for a cutoff frequency and sampling frequency to be
specified for the design of the digital filter from the analog filter.

filter[wc_] := DesignAnalogFilter[Butterworth, t,
Passband[1 - 10^(-1/20), {0, 0.2wc}],
Stopband[10^(-15/20), {0.3wc, Infinity}]

digitalFilter[wc_, Ts_] := ImpulseInvariance[filter[wc], Ts, t, n]

DiscreteTimeFourierTransform[Evaluate[digitalFilter[Pi, 1]], n, w],
{w, 0, Pi},
PhaseScale -> None,
MagnitudeScale -> Log,
Frame -> True,
Axes -> False

URL: ,

Subject (listing for 'Signals and Systems and sampling rates')
Author Date Posted
Signals and Systems and sampling rates Paul Edney 09/11/00 5:54pm
Re: Signals and Systems and sampling rates Aaron Honecker 09/13/00 1:52pm
< Previous CommentHelp | Reply To Comment | Reply To Topic