Design Square-Root Nyquist Filters

Neil Robertson

In his book on multirate signal processing, harris presents a nifty technique for designing square-root Nyquist FIR filters with good stopband attenuation [1]. In this post, I describe the method and provide a Matlab function for designing the filters. You can find a Matlab function by harris for designing the filters at [2].


Make Hardware Great Again

Jeff Brower

By now you're aware of the collective angst in the US about 5G. Why is the US not a leader in 5G ? Could that also happen -- indeed, is it happening -- in AI ? If we lead in other areas, why not 5G ? What makes it so hard ? This...


A Fast Real-Time Trapezoidal Rule Integrator

Rick Lyons

This article presents a computationally-efficient network for computing real?time discrete integration using the Trapezoidal Rule.


Third-Order Distortion of a Digitally-Modulated Signal

Neil Robertson

Analog designers are always harping about amplifier third-order distortion. Why? In this article, we'll look at why third-order distortion is important, and simulate a QAM signal with third order distortion.


A Narrow Bandpass Filter in Octave or Matlab

Paul Lovell

The design of a very narrow bandpass FIR filter, coded in either Octave or Matlab, can prove challenging if a computationally-efficient  filter is required. This is especially true if the sampling rate is high relative to the filter's center...


IIR Bandpass Filters Using Cascaded Biquads

Neil Robertson

In an earlier post [1], we implemented lowpass IIR filters using a cascade of second-order IIR filters, or biquads. This post provides a Matlab function to do the same for Butterworth bandpass IIR filters. Compared to conventional implementations, bandpass filters based on biquads are less sensitive to coefficient quantization [2]. This becomes important when designing narrowband filters.


Second Order Discrete-Time System Demonstration

Neil Robertson

Discrete-time systems are remarkable: the time response can be computed from mere difference equations, and the coefficients ai, bi of these equations are also the coefficients of H(z). Here, I try to illustrate this remarkableness by converting a continuous-time second-order system to an approximately equivalent discrete-time system. With a discrete-time model, we can then easily compute the time response to any input. But note that the goal here is as much to understand the discrete-time model as it is to find the response.


A Beginner's Guide To Cascaded Integrator-Comb (CIC) Filters

Rick Lyons

This article discusses the behavior, mathematics, and implementation of cascaded integrator-comb filters.


A Free DSP Laboratory

Stephen Morris

Getting Started In Audio DSPImagine you're starting out studying DSP and your particular interest is audio. Wouldn't it be nice to have access to some audio signals and the tools to analyze and modify them? In the old days, a laboratory like this...


Plotting Discrete-Time Signals

Neil Robertson

A discrete-time sinusoid can have frequency up to just shy of half the sample frequency. But if you try to plot the sinusoid, the result is not always recognizable. For example, if you plot a 9 Hz sinusoid sampled at 100 Hz, you get the result shown in the top of Figure 1, which looks like a sine. But if you plot a 35 Hz sinusoid sampled at 100 Hz, you get the bottom graph, which does not look like a sine when you connect the dots. We typically want the plot of a sampled sinusoid to resemble its continuous-time version. To achieve this, we need to interpolate.