Plot FFT using Python – FFT of sine wave & cosine wave

Key focus: Learn how to plot FFT of sine wave and cosine wave using Python. Understand FFTshift. Plot one-sided, double-sided and normalized spectrum using FFT.

Introduction

Numerous texts are available to explain the basics of Discrete Fourier Transform and its very efficient implementation – Fast Fourier Transform (FFT).  Often we are confronted with the need to generate simple, standard signals (sine, cosine, Gaussian pulse, squarewave, isolated rectangular pulse, exponential decay, chirp signal) for simulation purpose. I intend to show (in a series of articles) how these basic signals can be generated in Python and how to represent them in frequency domain using FFT. If you are inclined towards Matlab programming, visit here.

This article is part of the book Digital Modulations using Python, ISBN: 978-1712321638 available in ebook (PDF) and Paperback (hardcopy) formats

Sine Wave

In order to generate a sine wave, the first step is to fix the frequency f of the sine wave. For example, we wish to generate a sine wave whose minimum and maximum amplitudes are -1V and +1V respectively. Given the frequency of the sinewave, the next step is to determine the sampling rate.

For baseband signals, the sampling is straight forward. By Nyquist Shannon sampling theorem, for faithful reproduction of a continuous signal in discrete domain, one has to sample the signal at a rate higher than at-least twice the maximum frequency contained in the signal (actually, it is twice the one-sided bandwidth occupied by a real signal. For a baseband signal bandwidth ( to ) and maximum frequency in a given band are equivalent).

For Python implementation, let us write a function to generate a sinusoidal signal using the Python’s Numpy library. Numpy is a fundamental library for scientific computations in Python. In order to use the numpy package, it needs to be imported. Here, we are importing the numpy package and renaming it as a shorter alias np.

import numpy as np

Next, we define a function for generating a sine wave signal with the required parameters.

def sine_wave(f,overSampRate,phase,nCyl):
	"""
	Generate sine wave signal with the following parameters
	Parameters:
		f : frequency of sine wave in Hertz
		overSampRate : oversampling rate (integer)
		phase : desired phase shift in radians
		nCyl : number of cycles of sine wave to generate
	Returns:
		(t,g) : time base (t) and the signal g(t) as tuple
	Example:
		f=10; overSampRate=30;
		phase = 1/3*np.pi;nCyl = 5;
		(t,g) = sine_wave(f,overSampRate,phase,nCyl)
	"""
	fs = overSampRate*f # sampling frequency
	t = np.arange(0,nCyl*1/f-1/fs,1/fs) # time base
	g = np.sin(2*np.pi*f*t+phase) # replace with cos if a cosine wave is desired
	return (t,g) # return time base and signal g(t) as tuple

We note that the function sine wave is defined inside a file named signalgen.py. We will add more such similar functions in the same file. The intent is to hold all the related signal generation functions, in a single file. This approach can be extended to object oriented programming. Now that we have defined the sine wave function in signalgen.py, all we need to do is call it with required parameters and plot the output.

"""
Simulate a sinusoidal signal with given sampling rate
"""
import numpy as np
import matplotlib.pyplot as plt # library for plotting
from signalgen import sine_wave # import the function

f = 10 #frequency = 10 Hz
overSampRate = 30 #oversammpling rate
fs = f*overSampRate #sampling frequency
phase = 1/3*np.pi #phase shift in radians
nCyl = 5 # desired number of cycles of the sine wave

(t,x) = sine_wave(f,overSampRate,phase,nCyl) #function call

plt.plot(t,x) # plot using pyplot library from matplotlib package
plt.title('Sine wave f='+str(f)+' Hz') # plot title
plt.xlabel('Time (s)') # x-axis label
plt.ylabel('Amplitude') # y-axis label
plt.show() # display the figure

Python is an interpreter based software language that processes everything in digital. In order to obtain a smooth sine wave, the sampling rate must be far higher than the prescribed minimum required sampling rate, that is at least twice the frequency – as per Nyquist-Shannon theorem. Hence, we need to sample the input signal at a rate significantly higher than what the Nyquist criterion dictates. Higher oversampling rate requires more memory for signal storage. It is advisable to keep the oversampling factor to an acceptable value.

An oversampling factor of is chosen in the previous function. This is to plot a smooth continuous like sine wave. Thus, the sampling rate becomes . If a phase shift is desired for the sine wave, specify it too.

Sine wave using python
Figure 1: A 10Hz sinusoidal wave with 5 cycles and phase shift 1/3π radians

Different representations of FFT:

Since FFT is just a numeric computation of -point DFT, there are many ways to plot the result. The FFT, implemented in Scipy.fftpack package, is an algorithm published in 1965 by J.W.Cooley and
J.W.Tuckey for efficiently calculating the DFT.

The SciPy functions that implement the FFT and IFFT can be invoked as follows

from scipy.fftpack import fft, ifft
X = fft(x,N) #compute X[k]
x = ifft(X,N) #compute x[n]

1. Plotting raw values of DFT:

The x-axis runs from to – representing sample values. Since the DFT values are complex, the magnitude of the DFT is plotted on the y-axis. From this plot we cannot identify the frequency of the sinusoid that was generated.

import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft

NFFT=1024 #NFFT-point DFT      
X=fft(x,NFFT) #compute DFT using FFT    

fig1, ax = plt.subplots(nrows=1, ncols=1) #create figure handle
nVals = np.arange(start = 0,stop = NFFT) # raw index for FFT plot
ax.plot(nVals,np.abs(X))      
ax.set_title('Double Sided FFT - without FFTShift')
ax.set_xlabel('Sample points (N-point DFT)')        
ax.set_ylabel('DFT Values')
fig1.show()
Figure 2: Double sided FFT – without FFTShift

2. FFT plot – plotting raw values against normalized frequency axis:

In the next version of plot, the frequency axis (x-axis) is normalized to unity. Just divide the sample index on the x-axis by the length of the FFT. This normalizes the x-axis with respect to the sampling rate . Still, we cannot figure out the frequency of the sinusoid from the plot.

import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft

NFFT=1024 #NFFT-point DFT  
X=fft(x,NFFT) #compute DFT using FFT     

fig2, ax = plt.subplots(nrows=1, ncols=1) #create figure handle
   
nVals=np.arange(start = 0,stop = NFFT)/NFFT #Normalized DFT Sample points         
ax.plot(nVals,np.abs(X))     
ax.set_title('Double Sided FFT - without FFTShift')        
ax.set_xlabel('Normalized Frequency')
ax.set_ylabel('DFT Values')
fig2.show()
Figure 3: Double sided FFT with normalized x-axis (0 to 1)

3. FFT plot – plotting raw values against normalized frequency (positive & negative frequencies):

As you know, in the frequency domain, the values take up both positive and negative frequency axis. In order to plot the DFT values on a frequency axis with both positive and negative values, the DFT value at sample index has to be centered at the middle of the array. This is done by using FFTshift function in Scipy Python. The x-axis runs from to where the end points are the normalized ‘folding frequencies’ with respect to the sampling rate .

import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft,fftshift

NFFT=1024 #NFFT-point DFT      
X=fftshift(fft(x,NFFT)) #compute DFT using FFT  

fig3, ax = plt.subplots(nrows=1, ncols=1) #create figure handle
    
fVals=np.arange(start = -NFFT/2,stop = NFFT/2)/NFFT #DFT Sample points        
ax.plot(fVals,np.abs(X))
ax.set_title('Double Sided FFT - with FFTShift')
ax.set_xlabel('Normalized Frequency')
ax.set_ylabel('DFT Values');
ax.autoscale(enable=True, axis='x', tight=True)
ax.set_xticks(np.arange(-0.5, 0.5+0.1,0.1))
fig.show()
Figure 4: Double sided FFT with normalized x-axis (-0.5 to 0.5)

4. FFT plot – Absolute frequency on the x-axis vs. magnitude on y-axis:

Here, the normalized frequency axis is just multiplied by the sampling rate. From the plot below we can ascertain that the absolute value of FFT peaks at and . Thus the frequency of the generated sinusoid is . The small side-lobes next to the peak values at and are due to spectral leakage.

import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft,fftshift

NFFT=1024     
X=fftshift(fft(x,NFFT))

fig4, ax = plt.subplots(nrows=1, ncols=1) #create figure handle

fVals=np.arange(start = -NFFT/2,stop = NFFT/2)*fs/NFFT
ax.plot(fVals,np.abs(X),'b')
ax.set_title('Double Sided FFT - with FFTShift')
ax.set_xlabel('Frequency (Hz)')         
ax.set_ylabel('|DFT Values|')
ax.set_xlim(-50,50)
ax.set_xticks(np.arange(-50, 50+10,10))
fig4.show()
Figure 5: Double sided FFT – Absolute frequency on the x-axis vs. magnitude on y-axis

5. Power Spectrum – Absolute frequency on the x-axis vs. power on y-axis:

The following is the most important representation of FFT. It plots the power of each frequency component on the y-axis and the frequency on the x-axis. The power can be plotted in linear scale or in log scale. The power of each frequency component is calculated as

Where is the frequency domain representation of the signal . In Python, the power has to be calculated with proper scaling terms.

Figure 6: Power spectral density using FFT

Plotting the PSD plot with y-axis on log scale, produces the most encountered type of PSD plot in signal processing.

Figure 7: Power spectral density (y-axis on log scale) using FFT

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Essentials of Signal Processing
● Generating standard test signals
 □ Sinusoidal signals
 □ Square wave
 □ Rectangular pulse
 □ Gaussian pulse
 □ Chirp signal
Interpreting FFT results - complex DFT, frequency bins and FFTShift
 □ Real and complex DFT
 □ Fast Fourier Transform (FFT)
 □ Interpreting the FFT results
 □ FFTShift
 □ IFFTShift
Obtaining magnitude and phase information from FFT
 □ Discrete-time domain representation
 □ Representing the signal in frequency domain using FFT
 □ Reconstructing the time domain signal from the frequency domain samples
● Power spectral density
Power and energy of a signal
 □ Energy of a signal
 □ Power of a signal
 □ Classification of signals
 □ Computation of power of a signal - simulation and verification
Polynomials, convolution and Toeplitz matrices
 □ Polynomial functions
 □ Representing single variable polynomial functions
 □ Multiplication of polynomials and linear convolution
 □ Toeplitz matrix and convolution
Methods to compute convolution
 □ Method 1: Brute-force method
 □ Method 2: Using Toeplitz matrix
 □ Method 3: Using FFT to compute convolution
 □ Miscellaneous methods
Analytic signal and its applications
 □ Analytic signal and Fourier transform
 □ Extracting instantaneous amplitude, phase, frequency
 □ Phase demodulation using Hilbert transform
Choosing a filter : FIR or IIR : understanding the design perspective
 □ Design specification
 □ General considerations in design

Simulate matched filter system with SRRC filtering

Key focus: Let’s learn how to simulate matched filter receiver with square root raised cosine (SRRC) filter, for a pulse amplitude modulation (PAM) system.

Simulation Model

A basic pulse amplitude modulation (PAM) system as DSP implementation, is shown in Figure 1 by adding an upsampler (), pulse shaping function () at the transmitter and a matched filter (), downsampler () combination at the receiver.

Figure 1: DSP implementation of a PAM modulation system with pulse shaping and matched filtering

In this model, a random stream of source bits is first segmented into -bit wide symbols that can take any value from the set . The simulation code directly starts by generating a random set of symbols, that goes into the modulation mapper. Pulse amplitude modulation (MPAM) mapping and de-mapping, described in sections 5.3.1 and 5.4.1, are considered here for simulation. An MPAM modulator maps the -bit information symbols to one of the distinct signaling levels. The MPAM modulated symbols are shown in Figure 2.

This article is part of the book Wireless Communication Systems in Matlab, ISBN: 978-1720114352 available in ebook (PDF) format (click here) and Paperback (hardcopy) format (click here).

%Program: MPAM modulation
N = 10ˆ5; %Number of symbols to transmit
MOD_TYPE = 'PAM'; %modulation type
M = 4; %modulation level for the chosen modulation MOD_TYPE
d = ceil(M.*rand(1,N)); %random numbers from 1 to M for input to PAM
u = modulate(MOD_TYPE,M,d);%MPAM modulation
figure; stem(real(u)); %plot modulated symbols
Figure 2: M-PAM modulated Symbols

Each MPAM modulated symbol should last for some duration called symbol time, denoted as . Each modulated symbol will go through a discrete time pulse shaping filter whose impulse response is spaced sample, where denotes the sampling period. To do this, the incoming symbols from the modulation mapper need to be converted to discrete time impulse train by upsampling them by a factor (as per the upsampling equation given here ). The upsampler inserts zeros between each modulated symbols. In practice, is chosen as integral multiples of 4. The upsampler/oversampled output is shown in Figure 3.

%Program: Upsampling
L=4; %Oversampling factor (L samples per symbol period)
v=[u;zeros(L-1,length(u))];%insert L-1 zero between each symbols
%Convert to a single stream
v=v(:).';%now the output is at sampling rate
stem(real(v)); title('Oversampled symbols v(n)');
Figure 3: Modulated symbols upsampled by 4 (left) and the SRRC pulse shaping filter output (right)

In order to fill-in proper values in place of the inserted zeros, interpolation is performed by a pulse shaping filter by convolving the output of the upsampler and the pulse shaping function. The pulse shaping function needs to satisfy Nyquist criterion for zero ISI, otherwise, aliasing effect will wreak havoc. If the amplitude response of the channel is flat and if the noise is white, then the amplitude response of the pulse shaping function can be split equally between the transmitter and receiver. For this simulation the desired Nyquist pulse shape is a raised-cosine pulse shape and the task of raised-cosine filtering is equally split between the transmit and receive filters. This gives rise to square-root raised-cosine (SRRC) filters at the transmitter and receiver. This is a matched filter system, where the receive filter is matched with the transmit pulse shaping filter.

A matched filtering system is a theoretical framework and it is not a specific type of filter. It offers improved noise cancellation by improving the signal noise ratio at the output of the receive filter. The implementation starts with the design of an SRRC filter with roll-off factor . The SRRC filter length is influenced by the parameter – the span of the filter length in units of symbols and the oversampling factor .

Filters will not produce instantaneous output and they take sometime to produce the output. That is, the output of the filter is shifted in time with respect to the input. For symmetric FIR filters of length , the filter delay is . Apart from returning the SRRC pulse function, the filter design function given in this section returns the filter delay. Filter delays are useful in determining the appropriate sampling instances at the receiver. The modulated symbols at the transmitter are passed through the designed filter and the response of the filter is plotted in Figure 3 (right).

%Program: SRRC pulse shaping
%----Pulse shaping-----
beta = 0.3;% roll-off factor for Tx SRRC filter
Nsym=8;%SRRC filter span in symbol durations
L=4; %Oversampling factor (L samples per symbol period)
[p,t,filtDelay] = srrcFunction(beta,L,Nsym);%design filter
s=conv(v,p,'full');%Convolve modulated syms with p[n] filter
figure; plot(real(s),'r'); title('Pulse shaped symbols s(n)');
Figure 4: Received signal with AWGN noise (left) and the output of the matched filter (right)

The pulse shaped signal samples are sent through an AWGN channel, where the transmitted samples are added with noise samples that are generated according to the required (refer AWGN noise model given in this post). The received signal that is corrupted with AWGN noise is shown in Figure 4 (left).

%Program: Adding AWGN noise for given SNR value
EbN0dB = 10; %EbN0 in dB for AWGN channel
snr = 10*log10(log2(M))+EbN0dB; %Converting given Eb/N0 dB to SNR
%log2(M) gives the number of bits in each modulated symbol
r = add_awgn_noise(s,snr,L); %AWGN , add noise for given SNR, r=s+w
%L is the oversampling factor used in simulation
figure; plot(real(r),'r');title('Received signal r(n)');

For the receiver system, we assume that the ADC in the receiver produces an integer number of samples per symbol (i.e, is an integer). In practice, this is not always the case and thus a resampling filter is often included in real world designs. In the discrete time model, the received samples are passed through a matched filter, whose impulse response is matched to the impulse response of the pulse shaping filter as . Since the SRRC pulse is symmetric, we will be using the same SRRC pulse shaping function for the matched filter. The received samples are convolved with the matched filter and the output of the matched filter is shown in Figure 4 (right).

Refer the book Wireless Communication Systems in Matlab for the program on how to perform matched filtering

Next, we assume that the receiver has perfect knowledge of symbol timing instants and therefore, we will not be implementing a symbol timing synchronization subsystem in the receiver. At the receiver, the matched filter symbols are first passed through a downsampler that samples the filter output at correct timing instances.

The sampling instances are influenced by the delay of the FIR filters (SRRC filters in Tx and Rx). For symmetric FIR filters of length , the filter delay is . Since the communication link contains two filters, the total filter delay is . Therefore, the first valid sample occurs at position in the matched filter’s output vector ( is added due to the fact that Matlab array indices starts from 1). The downsampler that follows, starts to sample the signal from this position and returns every symbol. The downsampled output, shown in Figure 5, is then passed through a demodulator that decides on the symbols using an optimum detection technique and remaps them back to the intended message symbols.

Figure 5: Downsampling – output of symbol rate sampler
%Program: Symbol rate sampler and demodulation
%------Symbol rate Sampler-----
uCap = vCap(2*filtDelay+1:L:end-(2*filtDelay))/L;
%downsample by L from 2*filtdelay+1 position result by normalized L,
%as the matched filter result is scaled by L
figure; stem(real(uCap)); hold on;
title('After symbol rate sampler $\hat{u}$(n)',...
'Interpreter','Latex');
dCap = demodulate(MOD_TYPE,M,uCap); %demodulation

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Precoding for partial response signaling schemes

Introduction to precoding

Intersymbol interference (ISI) is a common problem in telecommunication systems, such as terrestrial television broadcasting, digital data communication systems, and cellular mobile communication systems. Dispersive effects in high-speed data transmission and multipath fading are the main reasons for ISI. To maximize the capacity, the transmission bandwidth must be extended to the entire usable bandwidth of the channel and that also leads to ISI.

To mitigate the effect of ISI, equalization techniques can be applied at the receiver side. Under the assumption of correct decisions, a zero-forcing decision feedback equalization (ZF-DFE) completely removes the ISI and leaves the white noise uncolored. It was also shown that ZF-DFE in combination with powerful coding techniques, allows transmission to approach the channel capacity [1]. DFE is adaptive and works well in the presence of spectral nulls and hence suitable for various PR channels that has spectral nulls. However, DFE suffers from error propagation and is not flexible enough to incorporate itself with powerful channel coding techniques such as trellis-coded modulation (TCM) and low-density parity codes (LDPC).

This article is part of the book Wireless Communication Systems in Matlab, ISBN: 978-1720114352 available in ebook (PDF) format (click here) and Paperback (hardcopy) format (click here).

These problems can be practically mitigated by employing precoding techniques at the transmitter side. Precoding eliminates error propagation effects at the source if the channel state information is known precisely at the transmitter. Additionally, precoding at transmitter allows coding techniques to be incorporated in the same way as for channels without ISI. In this text, a partial response (PR) signaling system is taken as an example to demonstrate the concept of precoding.

Precoding system using filters

In a PR signaling scheme, a filter is used at the transmitter to introduce a controlled amount of ISI into the signal. The introduced ISI can be compensated for, at the receiver by employing an inverse filter . In the case of PR1 signaling, the filters would be

Generally, the filter is chosen to be of FIR type and therefore its inverse at the receiver will be of IIR type. If the received signal is affected by noise, the usage of IIR filter at the receiver is prone to error propagation. Therefore, instead of compensating for the ISI at the receiver, a precoder can be implemented at the transmitter as shown in Figure 1.

Figure 1: A pre-equalization system incorporating a modulo-M precoder

Since the precoder is of IIR type, the output can become unbounded. For example, let’s filter a binary data sequence through the precoder used for PR1 signaling scheme .

% Matlab code snippet
>> d=[1,0,1,0,1,0,1,0,1,0]
>> filter(1,[1 1],d)
ans = 1  -1  2  -2  3  -3  4  -4  5  -5

The result indicates that the output becomes unbounded and some additional measure has to be taken to limit the output. Assuming M-ary signaling schemes like MPAM is used for transmission, the unbounded output of the precoder can be bounded by incorporating modulo-M operation.

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Reference

[1] R. Price, Nonlinear Feedback Equalized PAM versus Capacity for Noisy Filter Channels, in Proceedings of the Int. Conference on Comm. (ICC ’72), 1972, pp. 22.12-22.17

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Partial response schemes: impulse & frequency response

Impulse response and frequency response of PR signaling schemes

Consider a minimum bandwidth system in which the filter is represented as a cascaded combination of a partial response filter and a minimum bandwidth filter . Since is a brick-wall filter, the frequency response of the whole system is equivalent to frequency response of the FIR filter , whose transfer function, for various partial response schemes, was listed in Table 1 in the previous post (shown below).

Table 1: Partial response signaling schemes

The hand-crafted Matlab function (given in the book) generates the overall partial response signal for the given transfer function . The function records the impulse response of the filter by sending an impulse through it. These samples are computed at each symbol sampling instants. In order to visualize the pulse shaping functions and to compute the frequency response, the impulse response of are oversampled by a factor . This converts the samples from symbol rate domain to sampling rate domain. The oversampled impulse response of filter is convolved with a sinc filter that satisfies the Nyquist first criterion. This results in the overall response of the equivalent filter (refer Figure 2 in the previous post).

This article is part of the book Wireless Communication Systems in Matlab, ISBN: 978-1720114352 available in ebook (PDF) format (click here) and Paperback (hardcopy) format (click here).

The Matlab code to simulate both the impulse response and the frequency response of various PR signaling schemes, is given next (refer book for the Matlab code). The simulated results are plotted in the following Figure.

Figure: Impulse response and frequency response of various Partial response (PR) signaling schemes

Rate this post: Note: There is a rating embedded within this post, please visit this post to rate it.

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Partial response (PR) signaling Model

Consider the generic baseband communication system model and its equivalent representation, shown in Figure 1, where the various blocks in the system are represented as filters. To have no ISI at the symbol sampling instants, the equivalent filter should satisfy Nyquist’s first criterion.

Figure 1: A generic communication system model and its equivalent representation

If the system is ideal and noiseless, it can be characterized by samples of the desired impulse response . Let’s represent all the non-zero sample values of the desired impulse response, taken at symbol sampling spacing , as , for .

This article is part of the book
Wireless Communication Systems in Matlab (second edition), ISBN: 979-8648350779 available in ebook (PDF) format and Paperback (hardcopy) format.

The partial response signaling model, illustrated in Figure 2, is expressed as a cascaded combination of a tapped delay line filter with tap coefficients set to and a filter with frequency response . The filter forces the desired sample values. On the other hand, the filter bandlimits the system response and at the same time it preserves the sample values from the filter . The choice of filter coefficients for the filter and the different choices for for satisfying Nyquist first criterion, result in different impulse response , but renders identical sample values in Figure 2 [1].

Figure 2: A generic partial response (PR) signaling model

To have a system with minimum possible bandwidth, the filter is chosen as

The inverse Fourier transform of results in a sinc pulse. The corresponding overall impulse response of the system is given by

If the bandwidth can be relaxed, other ISI free pulse-shapers like raised cosine can be considered for the filter.

Given the nature of real world channels, it is not always desirable to satisfy Nyquist’s first criterion. For example, the channel in magnetic recording, exhibits spectral null at certain frequencies and therefore it defines the channel’s upper frequency limit. In such cases, it is very difficult to satisfy Nyquist first criterion. An alternative viable solution is to allow a controlled amount of ISI between the adjacent samples at the output of the equivalent filter shown in Figure 2. This deliberate injection of controlled amount of ISI is called partial response (PR) signaling or correlative coding.

Partial Response Signaling Schemes

Several classes of PR signaling schemes and their corresponding transfer functions represented as (where is the delay operator) are shown in Table 1. The unit delay is equal to a delay of 1 symbol duration () in a continuous time system.

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

References

[1] Peter Kabal and Subbarayan Pasupathy, Partial-response signaling, IEEE Transactions on Communications, Vol. 23, No. 9, pp. 921-934, September 1975.↗

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Construct eye diagram from stored signal samples

Eye diagram is a powerful tool to analyze the overall quality of a communication link. It reveals important characteristics of a communication link, that includes timing sensitivity, noise margin, inter-symbol interference (ISI) and zero-crossing jitter. It also shows the optimum sampling time for the receiver, which indicates when to sample the incoming signal for converting it to a symbol stream. It is more useful to plot the eye diagram at the receiver, where it gives visual cues for the engineers to check the signal integrity and to uncover problems in earlier stages of the design process.

Application of eye diagram

For each symbol received through a noisy channel, the receiver has to make the best estimate of what was transmitted. Eventually, this boils down to finding out the optimal decision time for each symbol (through timing recovery circuits) after the signal is processed through the equalizer and the matched filter.

In an eye diagram, each period of the waveform is repeated and overlaid on top of each other, forming an eye like pattern. It is usually visualized at the point just prior to the decisions. It reveals the ability of the receiver to distinguish between signal levels, in the presence of distortions like timing jitters (due to imperfect recovered clocks), noise level in the received signal prior to decision point, etc..,

An ideal eye diagram will show a wider eye that has a lot of margin in both horizontal and vertical direction that allows for lowest possible error rate in the receiver decisions. Figure 1, depicts the eye diagram for 2-PAM modulated square-root raised cosine (β=1) pulse shaped symbols sent through an AWGN channel having EbN0=50 dB (almost no noise condition).

Figure 1: Ideal eye diagram shown for two symbol durations for 2-PAM modulation shaped using square root raised cosine filters.

A narrower eye implies increased sensitivity to noise, since presence of more noise would cause erroneous symbol decisions. In essence, erroneous symbol decisions could be caused by timing jitters (measured in the horizontal direction) or the amplitude variation (measured in the vertical direction) or intersymbol interference (which affects the signal in both directions). Figure 2, depicts the eye diagram for 2-PAM modulated symbols sent through an AWGN channel having EbN0=20 dB (signal to noise ratio).

Figure 2: Eye diagram shown for 2-PAM modulated pulse shaped symbols corrupted with AWGN noise (EbN0=20 dB)

This article is part of the book
Wireless Communication Systems in Matlab (second edition), ISBN: 979-8648350779 available in ebook (PDF) format and Paperback (hardcopy) format.

Construction of eye diagrams from signals represented in computer memory.

To construct an eye diagram, the signal is divided into equal sections. The number of samples in each section should be proportional to , where is the symbol period (which is related to the oversampling factor by equation (1).

The factor denotes the oversampling factor or upsampling ratio which is given as the ratio of symbol period () and the sampling period () or equivalently, the ratio of sampling rate and the symbol rate

When all such sections are plotted in an overlapping manner, it produces the eye diagram. This is implemented in the following Matlab function. The sample usage of the function is given in the next section of this chapter and the sample outputs are available in the following Figure.

Program 1: plotEyeDiagram.m: Function for plotting eye diagram (kindly refer the book “Wireless Communication Systems using Matlab”)

function [eyeVals]=plotEyeDiagram(x,L,nSamples,offset,nTraces)
%Function to plot eye diagram
%x - input vector representing the signal
%L - oversampling factor (for calculating x-axis in plot)
%nSamples - number of samples per trace - preferably set to integral
% multiple of oversampling factor L(number of bits per symbol)
%offset - initial offset in the data from where to begin plotting
%nTraces - number of traces to plot
%If the signal processing toolbox is not available, put M=1
% and convert the line that says y=interp(x,M) to y=x

.....
Refer the book Wireless Communication systems using Matlab
.....
end

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Further reading

[1] Tektronix application note: Anatomy of an eye diagram.↗
[2] Anritsu application note: Understanding eye pattern measurements.↗

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Square-root raised-cosine pulse shaping

Let’s learn the equations and the filter model for simulating square root raised cosine (SRRC) pulse shaping. Before proceeding, I urge you to read about basics of pulse shaping in this article.

Figure 1: Combined response of two SRRC filters and frequency domain view of a single SRRC pulse

Raised-cosine pulse shaping filter is generally employed at the transmitter. Let be the raised cosine filter’s frequency response. Assume that the channel’s amplitude response is flat, i.e, and the channel noise is white. Then, the combined response of the transmit filter and receiver filter in frequency domain is given as

If the receive filter is matched with the transmit filter, we have

Thus, the transmit and the receive filter take the form

with , where is a nominal delay that is required to ensure the practical realizability of the filters. In time domain, a matched filter at the receiver is the mirrored copy of the impulse response of the transmit pulse shaping filter and is delayed by some time . Thus the task of raised cosine filtering is equally split between the transmit and receive filters. This gives rise to square-root raised-cosine (SRRC) filters at the transmitter and receiver, whose equivalent impulse response is described as follows.

This article is part of the book
Wireless Communication Systems in Matlab (second edition), ISBN: 979-8648350779 available in ebook (PDF) format and Paperback (hardcopy) format.

The roll-of factor for the SRRC is denoted as to distinguish it from that of the RC filter. A simple evaluation of the equation (4) produces singularities (undefined points) at and . The value of the square root raised cosine pulse at these singularities can be obtained by applying L’Hostipital’s rule [1] and the values are

A function for generating SRRC pulse shape is given next. It is followed by a test code that plots the combined impulse response of transmit-receive SRRC filter combination and also plots the frequency domain view of a single SRRC pulse as shown in Figure 1

The combined impulse response matters, as we can identify that the combined response hits zero at symbol sampling instants. This indicates that the job of ISI cancellation is split between transmitter and receiver filters. Note that the combined impulse response of two SRRC filters is same as the impulse response of the RC filter.

Program 1: srrcFunction.m: Function for generating square-root raised-cosine pulse (click here)

Matlab code for Program 1 is available is available in the book Wireless Communication Systems in Matlab (click here).

Program 2: test_SRRCPulse.m: Square-root raised-cosine pulse characteristics

Tsym=1; %Symbol duration in seconds
L=10; % oversampling rate, each symbol contains L samples
Nsym = 80; %filter span in symbol durations
betas=[0 0.22 0.5 1];%root raised-cosine roll-off factors
Fs=L/Tsym;%sampling frequency
lineColors=['b','r','g','k','c']; i=1;legendString=cell(1,4);
for beta=betas %loop for various alpha values
	[srrcPulseAtTx,t]=srrcFunction(beta,L,Nsym); %SRRC Filter at Tx
	srrcPulseAtRx = srrcPulseAtTx;%Using the same filter at Rx
	%Combined response matters as it hits 0 at desired sampling instants
	combinedResponse = conv(srrcPulseAtTx,srrcPulseAtRx,'same');
	
	subplot(1,2,1); t=Tsym*t; %translate time base & normalize reponse
	plot(t,combinedResponse/max(combinedResponse),lineColors(i));
	hold on;
	
	%See Chapter 1 for the function 'freqDomainView'
	[vals,F]=freqDomainView(srrcPulseAtTx,Fs,'double');
	subplot(1,2,2);
	plot(F,abs(vals)/abs(vals(length(vals)/2+1)),lineColors(i));
	hold on;legendString{i}=strcat('\beta =',num2str(beta) );i=i+1;
end
subplot(1,2,1);
title('Combined response of SRRC filters'); legend(legendString);
subplot(1,2,2);
title('Frequency response (at Tx/Rx only)');legend(legendString);

References

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Raised cosine pulse shaping

As mentioned earlier, the shortcomings of the sinc pulse can be addressed by making the transition band in the frequency domain less abrupt. The raised-cosine (RC) pulse comes with an adjustable transition band roll-off parameter , using which the transition band’s rate of decay can be controlled. The RC pulse shaping function is expressed in frequency domain as

Correspondingly, in time domain, the impulse response is given by

This article is part of the book Wireless Communication Systems in Matlab, ISBN: 978-1720114352 available in ebook (PDF) format (click here) and Paperback (hardcopy) format (click here).

A simple evaluation of the equation (2) produces singularities (undefined points) at and . The value of the raised-cosine pulse at these singularities can be obtained by applying L’Hospital’s rule [1] and the values are

Figure 1: Raised-cosine pulse and its manifestation in frequency domain

The following Matlab codes generate a raised cosine pulse for the given symbol duration and plot the time-domain view and the frequency response (shown in Figure 1). The RC pulse falls off at the rate of as , which is a significant improvement when compared to the decay rate of sinc pulse which is . It satisfies Nyquist criterion for zero ISI – the pulse hits zero crossings at desired sampling instants. By controlling , the transition band roll-off in the frequency domain can be made gradual.

Program 1: raisedCosineFunction.m: Function for generating raised-cosine pulse(click here)

Matlab code for Program 1 is available is available in the book Wireless Communication Systems in Matlab (click here).

Program 2: test_RCPulse.m: Raised-cosine pulses and their manifestation in frequency domain

Tsym=1; %Symbol duration in seconds
L=10; % oversampling rate, each symbol contains L samples
Nsym = 80; %filter span in symbol durations
alphas=[0 0.3 0.5 1];%RC roll-off factors - valid range 0 to 1
Fs=L/Tsym;%sampling frequency
lineColors=['b','r','g','k','c']; i=1;legendString=cell(1,4);

for alpha=alphas %loop for various alpha values
	[rcPulse,t]=raisedCosineFunction(alpha,L,Nsym); %RC Pulse
	
	subplot(1,2,1); t=Tsym*t; %translate time base for given duration
	plot(t,rcPulse,lineColors(i));hold on; %plot time domain view
	[vals,f]=freqDomainView(rcPulse,Fs,'double');%See Chapter 1
	
	subplot(1,2,2);
	plot(f,abs(vals)/abs(vals(length(vals)/2+1)),lineColors(i));
	hold on;legendString{i}=strcat('\alpha =',num2str(alpha) );i=i+1;
end
subplot(1,2,1);title('Raised Cosine pulse'); legend(legendString);
subplot(1,2,2);title('Frequency response');legend(legendString);

References

[1] Clay S. Turner, Raised cosine and root raised cosine formulae, Wireless Systems Engineering, Inc, May 29, 2007.

Rate this post: Note: There is a rating embedded within this post, please visit this post to rate it.

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Sinc pulse shaping

Key focus: Sinc pulse shaping of transmitted bits, offers minimum bandwidth and avoids intersymbol interference. Discuss its practical considerations & simulation.

Sinc pulse shaping

As suggested in the earlier post, the pulse shape that avoids ISI with the least amount of bandwidth is a sinc pulse of bandwidth . Here, is the baud rate of the system also called symbol rate. A sinc pulse described as time and frequency domain dual is given below

Following Matlab codes generate a sinc pulse with and plot the time-domain/frequency-domain response (Figure 1). From the time-domain plot, the value of the sinc pulse hits zero at integral multiple sampling instants seconds except at where it peaks to the maximum value. Thus the sinc pulse satisfies the Nyquist criterion for zero ISI.

This article is part of the book Wireless Communication Systems in Matlab, ISBN: 978-1720114352 available in ebook (PDF) format (click here) and Paperback (hardcopy) format (click here).

Program 1: sincFunction.m: Function for generating sinc pulse

Matlab code for Program 1 is available is available in the book Wireless Communication Systems in Matlab.

Program 2: Sinc pulse and its manifestation in frequency domain

Tsym=1; %Symbol duration
L=16; %oversampling rate, each symbol contains L samples
Nsym = 80; %filter span in symbol duration
Fs=L/Tsym; %sampling frequency
[p,t]=sincFunction(L,Nsym); %Sinc Pulse
subplot(1,2,1); t=t*Tsym; plot(t,p); title('Sinc pulse');
[fftVals,freqVals]=freqDomainView(p,Fs,'double'); %See Chapter 1
subplot(1,2,2);
plot(freqVals,abs(fftVals)/abs(fftVals(length(fftVals)/2+1)));
Figure 1: Sinc pulse and its manifestation in frequency domain

The main drawback of the sinc pulse is that it decays too slowly at the rate of as . This implies that the samples that are far apart can cause intersymbol interference in the event of modest clock synchronization errors. A sinc pulse is of infinite duration and for practical implementations, it has to be truncated to finite length for some integer . This leads to problems in frequency domain as explained next.

Figure 2 shows the one-sided frequency response of the sinc pulse that is truncated to various lengths. It is evident that the truncation of sinc pulse in time domain to leads to sidelobes in the frequency domain and the sidelobes become wider for decreasing values of . This effect is closely related to Gibbs phenomenon – the ringing artifact due to approximation of discontinuities by spectral methods. As a result, no matter how large the value of is chosen, the first sidelobe is always only down from the main lobe. Also, the sinc pulse is very sensitive to the timing jitters at the receiver. These problems can be addressed when the transition band in the frequency domain is made less abrupt.

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results

Rectangular pulse shaping – simulation model

Key focus: Rectangular pulse shaping with abrupt transitions eliminates intersymbol interference, but it has infinitely extending frequency response. Simulation discussed.

Rectangular pulse

A rectangular pulse with abrupt transitions is a natural choice for eliminating ISI. If an information sequence is shaped as rectangular pulses, at the symbol sampling instants, the interference due to other symbols are always zero. Easier to implement in hardware or software, a rectangular pulse of duration can be generated by the following function

The complete set of Matlab codes to generate a rectangular pulse and to plot the time-domain view and the frequency response is available in the book Wireless Communication Systems in Matlab.

This article is part of the book Wireless Communication Systems in Matlab, ISBN: 978-1720114352 available in ebook (PDF) format (click here) and Paperback (hardcopy) format (click here).

Program 1: rectFunction.m: Function for generating a rectangular pulse

function [p,t,filtDelay]=rectFunction(L,Nsym)
%Function for generating rectangular pulse for the given inputs
%L - oversampling factor (number of samples per symbol)
%Nsym - filter span in symbol durations
%Returns the output pulse p(t) that spans the discrete-time base
%-Nsym:1/L:Nsym. Also returns the filter delay.

Tsym=1;
t=-(Nsym/2):1/L:(Nsym/2); %unit symbol duration time-base
p=(t > -Tsym/2) .* (t <= Tsym/2);%rectangular pulse

%FIR filter delay = (N-1)/2, N=length of the filter
filtDelay = (length(p)-1)/2; %FIR filter delay end

Program 2: test rectPulse.m: Rectangular pulse and its manifestation in frequency domain

Matlab code for Program 2 is available is available in the book Wireless Communication Systems in Matlab.

Figure 1: Rectangular pulse and its manifestation in frequency domain

As shown in Figure 1, the rectangular pulse in the time-domain manifests as a sinc function that extends infinitely on either side of the frequency spectrum (though only a portion of the frequency response is plotted in the figure) and thus its spectrum is not band-limited. When the infinitely extending frequency response is stuffed inside a band-limited channel, the truncation of the spectrum leads to energy spills in the time-domain. If we were to use sharp rectangular pulses, it needs a huge bandwidth that could violate practical design specs.

Rate this article: Note: There is a rating embedded within this post, please visit this post to rate it.

Books by the author


Wireless Communication Systems in Matlab
Second Edition(PDF)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Python
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart

Digital Modulations using Matlab
(PDF ebook)

Note: There is a rating embedded within this post, please visit this post to rate it.
Checkout Added to cart
Hand-picked Best books on Communication Engineering
Best books on Signal Processing

Topics in this chapter

Pulse Shaping, Matched Filtering and Partial Response Signaling
● Introduction
● Nyquist Criterion for zero ISI
● Discrete-time model for a system with pulse shaping and matched filtering
 □ Rectangular pulse shaping
 □ Sinc pulse shaping
 □ Raised-cosine pulse shaping
 □ Square-root raised-cosine pulse shaping
● Eye Diagram
● Implementing a Matched Filter system with SRRC filtering
 □ Plotting the eye diagram
 □ Performance simulation
● Partial Response Signaling Models
 □ Impulse response and frequency response of PR signaling schemes
● Precoding
 □ Implementing a modulo-M precoder
 □ Simulation and results