A complex number

Convolution and Fourier Transform

One question I am frequently asked is regarding the definition of Fourier Transform. A continuous-time Fourier Transform for time domain signal $x(t)$ is defined as \[ X(\Omega) = \int _{-\infty} ^{\infty} x(t) e^{-j\Omega t} dt \] where $\Omega$ is the continuous frequency. A corresponding definition for discrete-time Fourier Transform for a discrete-time signal $x[n]$ is given by \[ X(e^{j\omega}) = \sum _{n=-\infty} ^{\infty} x[n] e^{-j\omega n} \] where $\omega$ is the discrete frequency related to continuous frequency $\Omega$ through the relation $\omega = \Omega T_S$ if the sample time is denoted by $T_S$. Focusing on the discrete-time Fourier Transform for

Continue reading
Spectrum of a sinusoid

Generating Signals and Viewing the Spectrum

One of the most common questions DSP beginners have is how to generate the signals (particularly, sinusoids) and view their spectrum. They have a rough idea what time domain and frequency domain are about but struggle to construct the first few lines of code that open the gates towards a deeper understanding of signals. For this reason, I produce below an Octave (or Matlab) code that you can simply copy and paste to view and modify the results. Keep in mind that the code has been written for an explanation purpose, not conciseness or optimization. As you progress towards developing

Continue reading
Flowgraph output

FSK Demodulation in GNU Radio

Frequency Modulation (FM) is one of the oldest communication techniques for high fidelity transmission. Its digital counterpart, Frequency Shift Keying (FSK), also plays a crucial role in applications requiring low receiver complexity. In an FSK scheme, digital information is transmitted by changing the frequency of a carrier signal. It can also be mixed with Chirp Spread Spectrum (CSS) for low-power long-range communication as used in LoRa PHY. Binary FSK Binary FSK (BFSK) is the simplest form of FSK where the two bits 0 and 1 correspond to two distinct carrier frequencies $F_0$ and $F_1$ to be sent over the air.

Continue reading
A bank of N filters each centered at discrete frequency k/N

Discrete Fourier Transform (DFT) as a Filter Bank

We have discussed before what a Discrete Fourier Transform (DFT) is and how to find the DFT of some commonly used signals. Here, we will see how a DFT acts as a (crude) bank of filters that can pass the signal contents around a desired frequency while blocking the rest. Let us start with the definition of the DFT. \begin{equation*} \begin{aligned} S_I[k]\: &= \sum \limits _{n=0} ^{N-1}\left[ s_I[n] \cos 2\pi\frac{k}{N}n + s_Q[n] \sin 2\pi\frac{k}{N}n\right] \\ S_Q[k] &= \sum \limits _{n=0} ^{N-1}\left[ s_Q[n] \cos 2\pi\frac{ k}{N}n – s_I[n] \sin 2\pi\frac{k}{N}n\right] \end{aligned} \end{equation*} for each $k$. In complex notation, this DFT is

Continue reading
Square-root Nyquist filters for three different excess bandwidths

How to Design Nyquist and Square-Root Nyquist Pulse Shaping Filters

The radio spectrum is a very precious resource like real estate and must be utilized judiciously. Pulse shaping filters control the spectral leakage of the transmitted signal in a wireless channel due to the strict restrictions to comply with a spectral mask. This is even more important for the upcoming 5G wireless systems which are based on a variety of wireless transmission protocols (such as mobile networks, Internet of Things (IoT) and machine to machine communications) combined in one comprehensive standard. Even for wired channels, there is always a natural bandwidth of the medium (copper wire, coaxial cable, optical fiber)

Continue reading