 ## Fractional Delay Farrow Filter

The Fractional Delay Farrow Filter is a digital filter that delays the discrete-time input signal by a fraction of the sample period. There are many applications where such a delay is necessary. As an example one can consider symbol synchronization in digital receivers, conversion between arbitrary sampling frequencies, echo cancellation, speech coding and speech synthesis, modeling of musical instruments, etc. ## Decimation and Interpolation with IFIR Filters

In this article, the principle of the IFIR filter is first explained and accompanied by simulation. It also shows how to use the IFIR filters efficiently in the process of decimation and interpolation. Here, too, simulations with Simulink are used to explain the subject in an understandable manner. ## Decimation and Interpolation with Polyphase Filters

This article deals with decimation and interpolation in classical and polyphase realizations. The topic is accompanied by many simulations with MATLAB and Simulink, so that the facts can be easily fixed. The simulations can be creatively expanded with your own ideas. ## Zero-Order-Hold function as a model for DAConverters

The output of a digital to analog converter, short DAC, is a constant analog signal between two discrete samples. The DAC's output register retains its value from one sample up to the next sample. The network, which converts the binary value of the register into an analog voltage thus supplies a constant voltage and that leads to a stepped output signal. The analog smoothing filter connected at the output together with the frequency response of the DAC, modeled with a Zero-Order-Hold function, results in distortions. These are examined here and solutions to compensate for them are presented. ## A Simplified Matlab Function for Power Spectral Density

In an earlier post, I showed how to compute power spectral density (PSD) of a discrete-time signal using the Matlab function pwelch.  Pwelch is a useful function because it gives the correct output, and it has the option to average multiple Discrete Fourier Transforms (DFTs).  However, a typical function call has five arguments, and it can be hard to remember how to set them all and how they default.

In this post, I create a simplified PSD function by putting a wrapper on pwelch that sets some parameters and converts the output units from W/Hz to dBW/bin.  The function is named psd_simple.m, and its code is listed in the appendix. ## Fractional Delay FIR Filters

Consider the following Finite Impulse Response (FIR) coefficients:

b = [b0 b1 b2 b1 b0]

These coefficients form a 5-tap symmetrical FIR filter having constant group delay [1,2] over 0 to fs/2 of:

D = (ntaps - 1)/2 = 2      samples

For a symmetrical filter with an odd number of taps, the group delay is always an integer number of samples, while for one with an even number of taps, the group delay is always an integer + 0.5 samples.  Can we design a filter with arbitrary delay, say 9.3 samples?  The answer is yes -- It is possible to design a non-symmetrical FIR filter with arbitrary group delay which is approximately constant over a wide band, with approximately flat magnitude response [3,4].  Let the desired group delay be:

D = (ntaps - 1)/2 + u

= D0 + u     samples,            (1)

where we call u the fractional delay and -0.5 <= u <= 0.5.  D0 is the fixed portion of the total delay; it is determined by ntaps.  The appendix lists a simple Matlab function frac_delay_fir.m to compute FIR coefficients for a given value of u and ntaps.  The function provides coefficients with approximately flat delay and frequency responses over a frequency range approaching 0 to fs/2.

In this post, we'll present a couple of examples using the function, then discuss the theory behind it.  Finally, we'll look at an example of a fractional delay lowpass FIR filter with arbitrary cut-off frequency. ## Digital Filtering in the Frequency Domain

Time domain digital filtering, whether implemented using FIR or IIR techniques, has been very well documented in literature and been thoroughly used in many base band processor designs. However, with the advent of software defined radios as well as CPU support in more recent baseband processors, it has become possible and often desirable to filter signals in software rather than digital hardware. Whereas, time domain digital filtering can certainly be implemented in software as well, it becomes highly inefficient as the number of filter taps grows. Frequency domain filtering, using FFT and IFFT operations, is significantly more efficient and surprisingly easy to understand. This document introduces the reader to frequency domain filtering both in theory and in practice via a MatLab script. ## The DFT of Finite-Length Time-Reversed Sequences

Recently I've been reading papers on underwater acoustic communications systems and this caused me to investigate the frequency-domain effects of time-reversal of time-domain sequences. I created this article because there is so little coverage of this topic in the literature of DSP. ## Model Signal Impairments at Complex Baseband

In this article, we develop complex-baseband models for several signal impairments: interfering carrier, multipath, phase noise, and Gaussian noise. To provide concrete examples, we'll apply the impairments to a QAM system. The impairment models are Matlab functions that each use at most seven lines of code. Although our example system is QAM, the models can be used for any complex-baseband signal. ## Update To: A Wide-Notch Comb Filter

This article presents alternatives to the wide-notch comb filter described in Reference .