Digital Signal Processing

# Convolution in Discrete-Time – Matlab

The output y[n] of a particular LTI-system can be obtained by:

The previous equation is called Convolution between discrete-time signals x[n] and h[n].

By convention, the convolution between x[n] and h[n] is expressed as follows:

`Example 1. `

Let the following rectangular pulse x[n] be an input to an LTI system with impulse response h[n]:

Determine the output y[n] of the system.

Solution:

In Elementary sequences we have designed a function stepseq for plotting the unit step function in discrete time, or any combination as example 1. Next Script allows plotting x[n].

n=[0:40];
x=stepseq(0,0,40)-stepseq(10,0,40);
stem(n,x)
xlabel(‘n’); ylabel(‘x[n]’)

Next Script allows plotting h[n].

n=[0:40];
h=(0.9).^n;
stem(n,h)
xlabel(‘n’); ylabel(‘h[n]’)

Now, we use conv Matlab function to determine y[n]:

y=conv(x,h);
n=[0:80];
stem(n,y);
xlabel(‘n’); ylabel(‘y[n]’)

Another approach is by using the filter function (see Solving discrete-time differential equations):

n=[0:40];
x=stepseq(0,0,40)-stepseq(10,0,40);
h=(0.9).^n;
y=filter(h,1,x);
stem(n,y)
xlabel(‘n’); ylabel(‘y[n]’)
grid

What yields:

There is a difference in the outputs of these two implementations that should be noted. As you can see in Figure 3, the output sequence from conv(x,h) function has a longer length than both x[n] and h[n] sequences. On the other hand, the output sequence from the filter(h,1,x) function in Figure 4 has exactly the same length as the input x[n] sequence. In practice, the use of the filter function is encouraged.

Watch out: The filter function can be used to compute the convolution indirectly. That was possible because of the impulse response in example 1 was a one-side exponential sequence for wich we could determine a difference equation representation. Not all infinite-lenght impulse responses can be converted into difference equations.

`Analytical Convolution`

We can do the convolution of x[n] and h[n] Analytically:

Applying the given equation for convolution:

We now use an expression for the sum of any finite number of terms of a geometric series (The Geometric Series in DSP), and that is given by:

So, we can express equation (1) as follows:

Equation (3) is almost a geometric series sum as equation (2) except that the terms u(n-k) takes different values depending on n and k. There are three possible conditions under u(n-k) which can be evaluated:

Case 1. n<0. Then u(n-k)=0 for 0 k 9. In consequence:

Case 2. In this case the nonzero values of and do not overlap. So, for 0n<9 then u(n-k)=1 for 0kn. In consequence:

Applying formula of equation (2):

Case 3. In this case the impulse response h[n] partially overlap the input x[n]. So, for 9 n. Then u(n-k)=1 for 0 k 9. In consequence:

In this last case h[n] completely overlaps the input x[n].

`Graphical method`

We can also use a graphical method as in the following example.

`Example 2`

The input signal x[n] to an LTI system with impulse response h[n]:

Determine graphically y[n] through:

Solution:

Sequences x[k] and h[n-k], and the convolution of both signals can be seen as follows:

We can also use convolution properties as follows.

`Example 3`
`Convolution Properties.`

Other interesting properties are:

With an input x[n], the response of a LTI system y[n] is:

The impulse response h[n] of the system is:

Determine x[n]. Choose the right answer from:

Solution:

Considering:

We express the impulse response in terms of displaced Dirac deltas:

If we select:

Then:

So right answer is letter a). Demonstration: Using the previous equation, Let´s plot y[n] in Matlab.

The impulse response h[n] and option a) for input x[n] can be plotting in Matlab using:

n=[-3:10];
h=stepseq(0,-3,10)-stepseq(4,-3,10);
stem(n,h)
xlabel(‘n’); ylabel(‘h[n]’)

n=[-3:10];
x=stepseq(-3,-3,10)-stepseq(1,-3,10);
stem(n,x)
xlabel(‘n’); ylabel(‘x[n]’)

Now, y[n] can be plotting by using:

n=[-3:10];
h=stepseq(0,-3,10)-stepseq(4,-3,10);
x=stepseq(-3,-3,10)-stepseq(1,-3,10);
x1=stepseq(-2,-3,10)-stepseq(2,-3,10);
x2=stepseq(-1,-3,10)-stepseq(3,-3,10);
x3=stepseq(0,-3,10)-stepseq(4,-3,10);
y=x+x1+x2+x3;
stem(n,y)

Which we would also have been able to get by using:

n=[-3:10];;
h=stepseq(0,-3,10)-stepseq(4,-3,10);
x=stepseq(-3,-3,10)-stepseq(1,-3,10);
y=conv(h,x);
n=[0:26];
stem(n,y)
xlabel(‘n’); ylabel(‘y[n]’)

NEXT:

Source:

• Digital Signal Processing Using Matlab, 3erd ed
• Fundamentos_de_Señales_y_Sistemas_usando la Web y Matlab
• Oppenheim – Señales y Sistemas
• Análisis de Sistemas Lineales Asistido con Scilab – Un Enfoque desde la Ingeniería Eléctrica.

Literature review by:

Prof. Larry Francis Obando – Technical Specialist – Educational Content Writer

Exercises are solved!!

WhatsApp:  +34633129287  Inmediate Attention!!

Copywriting, Content Marketing, Tesis, Monografías, Paper Académicos, White Papers (Español – Inglés)

Escuela de Ingeniería Electrónica de la Universidad Simón Bolívar, USB Valle de Sartenejas.

Escuela de Ingeniería Eléctrica de la Universidad Central de Venezuela, UCV Caracas.

Escuela de Turismo de la Universidad Simón Bolívar, Núcleo Litoral.

Contacto: España. +34633129287

Caracas, Quito, Guayaquil, Jaén.

WhatsApp:  +34633129287