Professional Documents
Culture Documents
Taghiszadeh 2000 - Digital Signal Processing
Taghiszadeh 2000 - Digital Signal Processing
S R Taghizadeh <srt@unl.ac.uk>
January 2000
Introduction
Matlab and its applications in analysis of continuous-time signals and systems has
been discussed in part 1 and 2 of this series of practical manuals. The purpose of part
3 is to discuss the way Matlab is used in analysis of discrete-time signals and systems.
Each section provides a series of worked examples followed by a number of
investigative problems. You are required to perform each of the worked examples in
order to get familiar to the concept of Matlab environment and its important functions.
In order to test your understanding of the concept of discrete-time signals & systems
analysis, you are required to complete as many of the investigation / case study
problems as possible. The areas covered are designed to enforce some of the topics
covered in the formal lecture classes. These are:
Spectral analysis
f
n + J)
fs
where f is the signal frequency, fs is the sampling frequency, q is the phase and A is
the amplitude of the signal. The program and its output is shown below:
% Program: W2E1b.m
% Generating 64 samples of x(t)=sin(2*pi*f*t) with a
% Frequency of 1KHz, and sampling frequency of 8KHz.
N=64;
% Define Number of samples
n=0:N-1;
% Define vector n=0,1,2,3,...62,63
f=1000;
% Define the frequency
fs=8000;
% Define the sampling frequency
x=sin(2*pi*(f/fs)*n); % Generate x(t)
plot(n,x);
% Plot x(t) vs. t
grid;
title('Sinewave [f=1KHz, fs=8KHz]');
xlabel('Sample Number');
ylabel('Amplitude');
Sinewave [f=1KHz, fs=8KHz]
1
0.8
0.6
Amplitude
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
20
30
40
Sample Number
50
60
70
Note that there are 64 samples with sampling frequency of 8000Hz or sampling time
of 0.125 mS (i.e. 1/8000). Hence the record length of the signal is 64x0.125=8mS.
There are exactly 8 cycles of sinewave, indicating that the period of one cycle is 1mS
which means that the signal frequency is 1KHz.
Task: Generate the following signals
(i)
(ii)
The same signal as in (i) but with a phase angle of p/4 (i.e. 45o).
% Program W2E2.m
% Generating the signal x(t)=exp(-0.1t)
t=0:0.1:40;
x=exp(-0.1*t);
plot(t,x);
grid;
title('Exponential Signal');
xlabel('Time [mS]');
ylabel('Amplitude');
And the output is:
Exponential Signal
1
0.9
0.8
Amplitude
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
10
15
20
Time [mS]
25
30
35
40
Task: Generate the signal: x(t ) = e -0.1t sin(0.6t ) for t = 0 to 40ms in steps of 0.1 Sec
plot(n,x);
% Plot the impulse
grid;
title('A Unit Impulse Signal');
xlabel('Sample Number');
ylabel('Amplitude');
A Unit Impulse Signal
1
0.9
0.8
A
m
p
litu
d
e
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-40
-30
-20
-10
0
10
Sample Number
20
30
40
x(n)=2d(n-10)
(ii)
x(n)=5d(n-10)+2.5d(n-20)
Amplitude
0.5
-0.5
-20
-15
-10
-5
0
5
Sample Number
10
15
20
x(n)=u(n)-u(n-1)
(ii)
g(n)=u(n-1)-u(n-5)
Input, x(n)
Noise
Cancellation
algorithm
Output,
y(n)@x(n)
Noise, w(n)
Matlab provides two commands, which may be applied to generate random numbers.
Normally Distributed Random Numbers.
randn(N)
Is an N-by-N matrix with random entries, chosen from a normal distribution with
mean zero and variance one.
randn(M,N), and randn([M,N]) are M-by-N matrices with random entries.
300
250
200
Total
Amplitude
2
0
150
100
-2
50
-4
200
400
600
800
Sample Number
1000
0
-4
1200
-2
0
Sample Number
150
100
0.6
Total
Amplitude
0.8
0.4
50
0.2
0
200
400
600
800
Sample Number
1000
1200
0.2
0.4
0.6
Sample Number
0.8
Input, x(n)
Z -D
Output,
y(n)=x(n-D)
Here 'D' is the number of samples which the input signal must be delayed. For
example if x(n)=[1, 2, 3, 4, 5], then x(n-3)=[0,0,0,1,2,3,4,5].
Input, x1(n)
S
+
Output,
y(n)=x1(n)+x2(n)
Input, x2(n)
When adding two signals together, signals must have the same number of samples. If
one signal has less than number of samples than the other, then this signal may be
appended with zeros in order to make it equal length to the second signal before
adding them.
v Signal Amplification / Attenuation
Output,
y(n)=ax(n)
Input, x1(n)
a
'a' is a numerical constant. If a>1, then the process is referred to as 'amplification' ,
if 0<a<1, the process is referred to as 'attenuation'.
v Signal Differentiation / Integration
Input, x(t)
Input, x(t)
d
dt
Differentiatin
Integration
Output,
y ( n) =
d
x(t )
dt
Output,
t2
10
Input, x1(n)
Output,
y(n)=x1(n)*x2(n)
Input, x2(n)
A Matlab program given below, provide an example of each of the above basic
operations:
% Program: W2E6.m
% Program demonstrating Basic Signal Manipulation
N=128;
f1=150;
f2=450;
f3=1500;
fs=8000;
n=0:N-1;
x1=sin(2*pi*(f1/fs)*n);
x2=(1/3)*sin(2*pi*(f2/fs)*n);
x3=sin(2*pi*(f3/fs)*n);
figure(1);
subplot(1,1,1);
subplot(2,3,1);
plot(n,x1);
grid;
title('Signal, x1(n)');
subplot(2,3,2);
plot(n,x2);
grid;
title('Signal, x2(n)');
subplot(2,3,3);
plot(n,x3);
grid;
title('Signal, x3(n)');
% Signal Delay
x1d=[zeros(1,20), x1(1:N-20)];
subplot(2,3,4);
plot(n,x1d);
Digital Signal Processing Case Study
Copyright-S.R.Taghizadeh
11
grid;
title('Delayed x(n), [x1(n-20)]');
% Signal Addition
xadd=x1+x2;
subplot(2,3,5);
plot(n,xadd);
grid;
title('x1(n)+x2(n)');
% Signal Multiplication
xmult=x1.*x3;
subplot(2,3,6);
plot(xmult);
grid;
title('x1*x3');
Signal, x1(n)
Signal, x2(n)
Signal, x3(n)
0.4
0.5
0.2
0.5
-0.5
-0.2
-0.5
-1
100
200
-0.4
100
200
-1
x1(n)+x2(n)
1
0.5
0.5
0.5
-0.5
-0.5
-0.5
100
200
-1
100
100
200
x1*x3
-1
200
-1
100
200
12
Given a sampled signal x(n), its Discrete Fourier Transform (DFT) is given
by:
X( k ) =
N -1
x( n )e - j 2pnk / N
k=0,1,2,,N-1
n =0
The magnitude of the X(k) [i.e. the absolute value] against k is called the
spectrum of x(n). The values of k is proportional to the frequency of the
signal according to:
fk =
kFs
N
13
subplo(2,1,1);
plot(k,MagX);
subplot(2,1,2);
plot(k,PhaseX);
Investigate:
(i)
At what value of the index k does the magnitude of the DFT of x has major
peaks.
(ii)
(iii)
(iv)
(v)
Set 128 and generate x(n) for n=0,1,2,,N-1. Append a further 512 zeros to
x(n) as shown below: [Note the number of samples, N=128+512=640].
Xe=[x, zeros(1,512)];
Perform the DFT of the new sequence and plot its magnitude and phase.
Compare with the previous result. Explain the effect of zero padding a signal
with zero before taking the discrete Fourier Transform.
[2]
x ( n) =
1
N
N -1
X ( k )e
j 2pnk / N
for 0 n N - 1
k =0
14
Use x(n)={1,1,1,1}, and N=4, determine the DFT. Record the Magnitude and
phase of the DFT.
Use the IDFT to transfer the DFT results (i.e. Xk sequence) to its original
sequence.
f s = 128 Hz and N = 256 samples , obtain the FFT of the windowed signal using
rectangular and hamming windows, zero padded to N1=1024. Plot the normalised
FFT magnitude of the windowed signals. Which windowed signal shows a narrower
mainlobe?. Which windowed signal shows the smaller peak sidelobe?.
A Matlab program implementing the spectrum is shown below:
f1=30;
% Signal frequency
fs=128;
% Sampling frequency
N=256;
% Number of samples
N1=1024;
% Number of FFT points
n=0:N-1;
% Index n
f=(0:N1-1)*fs/N1;
% Defining the frequency points [axis]
x=cos(2*pi*f1*n/fs); % Generate the signal
XR=abs(fft(x,N1));
% find the magnitude of the FFT using No
xh=hamming(N);
xw=x .* xh';
XH=abs(fft(xw,N1));
subplot(2,1,1);
plot(f(1:N1/2),20*log10(XR(1:N1/2)/max(XR)));
title('Spectrum of x(t) using Rectangular Windows');
grid;
xlabel('Frequency, Hz');
ylabel('Normalised Magnitude, [dB]');
subplot(2,1,2);
plot(f(1:N1/2),20*log10(XH(1:N1/2)/max(XH)));
title('Spectrum of x(t) using Hamming Windows');
grid;
xlabel('Frequency, Hz');
ylabel('Normalised Magnitude, [dB]');
15
10
10
20
30
40
50
Frequency, Hz
Spectrum of x(t) using Hamming Windows
60
70
60
70
-50
-100
-150
20
30
40
Frequency, Hz
50
It can be seen from the spectrum plots that both the rectangular window and
hamming window have their peak amplitude at f=30Hz corresponding to the signal
frequency. While the rectangular window has a narrower mainlobe, hamming
window provides less peak sidelobes than the rectangular window. There are many
other types of windows which are available as Matlab functions and are listed
below:
bartlett(N)
blackman(N)
boxcar(N)
hamming(N)
hanning(N)
kaiser(N,beta)
triang(N)
16
sinusoidal at 120Hz and 60Hz, then ideally the spectrum would be a plot of
magnitude vs. frequency and would contain two peaks: one at 60 Hz and the other at
120 Hz illustrated in the next example. The following Matlab commands are the basis
of determining the spectrum of a signal:
fft
psd
spectrum
In the following examples, we illustrate their use. One of the most important aspects
of spectral analysis is the interpretation of the spectrum and its relation to the signal
under investigation.
Task 1:
Generate 256 samples of a sinusoidal signal of frequency 1KHz with a
sampling frequency of 8KHz. Plot the signal and its spectrum.
Here is the program:
N=256; % Total Number of Samples
fs=8000; % Sampling frequency set at 1000Hz
f=1000;
n=0:N-1;
% Now generate the sinusoidal signal
x=sin(2*pi*(f/fs)*n);
% Estimate its spectrum using fft command
X=fft(x);
magX=abs(X);
% Build up an appropriate frequency axis
fx=0:(N/2)-1; % first make a vector for
f=0,1,2,...(N/2)-1
fx=(fx*fs)/N; % Now scale it so that it represents
frequencies in Hz
figure(1);
subplot(1,1,1);
plot(fx,20*log10(magX(1:N/2)));
grid;
title('Spectrum of a sinusoidal signal with f=1KHz');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
17
Magnitude (dB)
-50
-100
-150
-200
-250
-300
-350
1000
2000
Frequency (Hz)
3000
4000
It is clear from the spectrum, that the signal consists of a single sinusoidal
components of frequency 1000Hz. Other artefacts in the figure are due to the limited
number of samples, windowing effects, and computation accuracy.
Task 1:
Consider, the notch filter in the previous section. The transfer function of the
notch filter is repeated here for convenience:
18
1 - 1.8996 z -1 + z -2
H ( z ) = 0.9969
1 - 1.8537 z -1 + 0.9937 z - 2
Input, x(n)
Output, y(n)
2pf1n
2pf n
) + sin( 2 ) , with f1=120 Hz , f2=60 Hz and fs , the
fs
fs
19
[pxx,fx]=psd(x,2*N,fs);
plot(fx,20*log10(pxx));
grid;
title('Magnitude Spectrum of x(n)');
xlabel('Frequency, Hz');
ylabel('Magnitude, dB');
[h,f]=freqz(b,a,1024,fs);
% of
% the filter with coefficients 'b'
% and 'a', using 1024 points around
% the unit circle with a sampling
% frequency of fs. The function
% returns the values of the transfer
% function h, for each frequency in
% f in Hz.
magH=abs(h);
% Calculates the magnitude of the filter
phaseH=angle(h);
% Calculates the phase angle of the filter
subplot(1,3,2);
% Divides the figure into two rows and one
% column and makes the first row the active
% one
plot( f, 20*log10(magH));
% plots the magnitude in dB against
% frequency
grid;
% Add a grid
20
20
20
-2
-4
-20
-40
-6
Magnitude, dB
Magnitude, dB
Magnitude, dB
-8
-10
-40
-12
-60
-20
-14
-60
-80
-16
-100
200
400
Frequency, Hz
600
-18
200
400
Frequency
600
-80
200
400
Frequency, Hz
600
It can be seen from the plot, that the input signal consists of two sinusoidal
components at 60Hz and 120Hz. From the magnitude response of the filter, it is clear
that the filter attenuates components whose frequencies are at 60 Hz. Therefore, the
output spectrum consists of the 120 Hz signal and attenuated (0 dB) signal at 60Hz.
A final example considers the use of the Matlab command 'spectrum' in order to
estimate the spectrum of a given signal.
Task 3:
Consider estimating the spectrum of a signal consisting of three sinusoidal signals at
frequencies, f1=500Hz, f2=1000Hz, and f3=1500Hz. Assume a sampling frequency
of 8KHz.
The Matlab Program and its output is shown next:
% Program Name: Tut17.m
clear;
N=1024; % Total Number of Samples
fs=8000; % Sampling frequency set at 1000Hz
f1=500;
f2=1000;
f3=1500;
n=0:N-1;
% Generate the signal
21
x=sin(2*pi*(f1/fs)*n)+sin(2*pi*(f2/fs)*n)+sin(2*pi*(f3/fs)*n);
pxx=spectrum(x,N);
% Estimate the Spectrum
specplot(pxx,fs);
% Plot the spectrum
grid;
title('Power Spectrum of x(n)');
xlabel('Frequency, Hz');
ylabel('Magnitude, dB');
10
Magnitude, dB
10
-5
10
-10
10
-15
10
500
1000
1500
2000
2500
Frequency, Hz
3000
3500
4000
22
1
T 2T
R xx ( t ) = lim
-T x( t )x( t + t )dt
(1)
R xx ( m ) =
1
N-m
N - m +1
x( n )x( n + m - 1 )
[Biased Autocorrelation]
n =1
(2)
R xx ( m ) =
1
N
N - m +1
x( n )x( n + m - 1 )
[Uniased Autocorrelation]
n =1
for m=1,2,,M+1
Digital Signal Processing Case Study
Copyright-S.R.Taghizadeh
23
1
T T
R xy ( t ) = lim
-T x( t ) y( t + t )dt
(3)
or
1
T T
R yx ( t ) = lim
-T y( t )x( t + t )dt
(4)
R yx ( m ) =
1
N
N - m +1
y( n )x( n + m - 1 )
(5)
n =1
m=1,2,3,..,N+1
Where N is the record length (i.e. number of samples).
The properties of cross correlation function are listed in table 1.2.
24
Autocorrelation Properties
[1] Maximum Value:
The magnitude of the autocorrelation function of a wide sense stationary random
process at lag m is upper bounded by its value at lag m=0:
R xx ( 0 ) R xx ( k ) for k 0
[2] Periodicity:
If the autocorrelation function of a WSS random process is such that:
A2
cos( w 0 m )
2
2p
, then R xx ( m ) is periodic with periodic N and x(n) is meanN
square periodic.
[4] Symmetry:
The autocorrelation function of WSS process is a conjugate symmetric function of m:
R xx ( m ) = R *xx ( -m )
For a real process, the autocorrelation sunction is symmetric: R xx ( m ) = R xx ( -m )
25
R xx ( 0 ) = E x( n )
} 0
[6] If two random processes x(n) and y(n) are uncorrelated, then the autocorrelation
of the sum x(n)=s(n)+w(n) is equal to the sum of the autocorrelations of s(n) and
w(n):
R xx ( m ) = R ss ( m ) + R ww ( m )
[7] The mean value:
The mean or average value (or d.c.) value of a WSS process is given by:
mean , x = R xx ( )
Table 1.1 Properties of Autocorrelation function
[5] R xy ( m )
R xx ( 0 )R yy ( 0 )
1
R xx ( 0 ) + R yy ( 0 )
2
[6] When R xy ( m ) = 0 , x(n) and y(n) are Sid to be uncorrelated or they are said to
be statistically independent (assuming they have zeros mean.)
Table 1.1 Properties of cross correlation function
26
Matlab Implementation
Matlab provides a function called xcorr.m which may be used to implement both auto
and cross correlation function. Its use is indicated in the following examples:
27
28
Amplitude
0.5
0
-0.5
-1
3
4
Time, [s]
Autocorrelation function of the sinewave
Autocorrelation
1000
500
-500
500
1000
1500
2000
2500
lags
Note that if you want to write your own autocorrelation function, you may use
equation (2) to do this. Here is a how it may be written:
function [Rxx]=autom(x)
% [Rxx]=autom(x)
% This function Estimates the autocorrelation of the sequence
of
% random variables given in x as: Rxx(1), Rxx(2),,Rxx(N),
where N is
% Number of samples in x.
N=length(x);
Rxx=zeros(1,N);
for m=1: N+1
for n=1: N-m+1
Rxx(m)=Rxx(m)+x(n)*x(n+m-1);
end;
end;
29
To use the above function, you need to save this under autom.m and then it may be
used as follows:
N=1024;
f1=1;
FS=200;
n=0:N-1;
x=sin(2*pi*f1*n/FS);
t=[1:N]*(1/FS);
subplot(2,1,1);
plot(t,x);
title('Sinwave of frequency 1000Hz [FS=8000Hz]');
xlabel('Time, [s]');
ylabel('Amplitude');
grid;
Rxx=autom(x);
subplot(2,1,2);
plot(Rxx);
grid;
title('Autocorrelation function of the sinewave');
xlabel('lags');
ylabel('Autocorrelation');
Note this version of estimating the autocorrelation function generates the same
number of samples as the signal itself and that the maximum is now placed at the
origin. (Rxx(1) is the origin).
30
Amplitude
0.5
0
-0.5
-1
3
Time, [s]
1000
1200
Autocorrelation
400
200
0
-200
-400
-600
200
400
600
lags
800
Example 2: Crosscorrelation
Plot the crosscorrelation of the following signal:
x( n ) = sin( 2pf 1t )
with f 1 = 1Hz
y( n ) = x( n ) + w( n )
where w(n) is a zeros mean, unit variance of Gaussina random process.
N=1024;
% Number of samples to generate
f=1;
% Frequency of the sinewave
FS=200;
% Sampling frequency
n=0:N-1;
% Sampling index
x=sin(2*pi*f1*n/FS); % Generate x(n)
y=x+10*randn(1,N);
% Generate y(n)
subplot(3,1,1);
plot(x);
title('Pure Sinewave');
grid;
subplot(3,1,2);
31
plot(y);
title('y(n), Pure Sinewave + Noise');
grid;
Rxy=xcorr(x,y);
% Estimate the cross correlation
subplot(3,1,3);
plot(Rxy);
title('Cross correlation Rxy');
grid;
The output is:
Pure Sinewave
1
0.5
0
-0.5
-1
200
400
600
800
y(n), Pure Sinewave + Noise
1000
1200
200
400
1000
1200
40
20
0
-20
-40
600
Cross correlation Rxy
800
500
-500
500
1000
1500
2000
2500
32
Question [1]
From the results shown for example 2, what function cross correlation has performed.
Question [2]
Given x( n ) = A sin( w 0 t + J ) , prove that its autocorrelation function is given by:
A2
R xx ( t ) =
cos( wt )
2
Explain this result.
33
Case Study
Time Delay Estimation
Processing Radar Returned Signal
r( t ) = ax( t - D ) + w( t )
Transmitting &
Receiving Dish
A pulse x(t) is transmitted, the reflected signal from an object is returned to the
receiver. The returned signal (r(t)) is delayed (i.e. D seconds) , noisy and attenuated.
The objective is to measure (estimate) the time delay between the transmitted and the
returned signal.
Analysis: Let the transmitted signal be x(t), then the returned signal r(t) may be
modelled as:
r( t ) = ax( t - D ) + w( t )
Digital Signal Processing Case Study
Copyright-S.R.Taghizadeh
34
R rx ( t ) = E{r( t )x( t + t )}
Hence
(6)
R rx ( t ) = aR xx ( t - D ) + R wx ( t )
R wx ( t ) = 0
This is also stated in table 1.2 under the property number [6].
Hence the cross-correlation function between the transmitted signal and the received
signal may be written as:
R rx ( t ) = aR xx ( t - D )
(7)
35
Therefore if we plot R rx ( t ) , it will only have one peak value that will occur at
Crosscorrelation Rrx
350
300
250
200
150
100
50
0
-50
-100
50
100
150
200
250
300
Estimated Time
Delay as number of
samples
Investigation
[1]
n=4
n
N=256
36
[2]
Delay the signal by say 32 samples and reduce its amplitude by an attenuation
factor of say a = 0.7 , call this xd(n) as shown below:
xd(n)
5a
n=34
n
N=256
[3]
Generate N=256 samples of Gaussian random signal and call this w(n).
[4]
Generate the simulated received signal by adding the transmitted signal x(n)
and the noise signal w(n), i.e.
r( n ) = ax( n - d ) + sigman w( n )
Where sigman is the noise amplitude (initially set this to 1.
[5]
using subplot(2,2,1), plot the signals x(n), xd(n), and r(n). Appropriately label
and grid the each plot.
[6]
37
[7]
From the plot estimate the delay. Does it agree with the theoretical delay
value?
[8]
[9]
r( t ) = ax( t - D ) + w( t )
Taking the Fourier transform of both sides yields:
Pr ( w ) = aX ( w )e - jwD + W ( w )
Or taking the Fourier Transform of the cross correlation of r(t) and x(t) gives:
Phase = wD
= 2pfD
38
d
Phase ), we have the slope of the
d( f )
Slope = 2pD
Or
D=
Slope
2p
Here is how you may estimate the cross spectrum between the transmitted signal and
the received signal and to obtain the phase plot.
% Estimation of time delay using the phase of the Cross
Spectrum
Prx=csd(x,r);
% Estimate the Cross Spectrum
pha=angle(Prx);
% Get the phase
phase=unwrap(pha); % Unwrap the phase
plot(phase);
% Plot the phase
Investigation
Generate N=256 samples of a sinusoidal signal of amplitude 1 volts, frequency,
f 1 =1Hz. Use a sampling frequency, Fs =200Hz, and call this signal the transmitted
signal, x(t).(i.e. x( t ) = sin( 2pf 1t ) )
Generate a received signal r(t) as follows:
r(t) is also a sinusoidal of the same frequency whose amplitude has been attenuated by
0.5 and delayed by 2.5 Seconds. Add white noise with zero mean and a variance of
0.01. (i.e. r( t ) = 0.5 sin( 2pf 1 ( t - 2.5 )) + w( t ) )
Plot x(t) and y(t).
Digital Signal Processing Case Study
Copyright-S.R.Taghizadeh
39
a=
R xr ( D )
Value of the peak at t = D
=
R xx ( 1 ) The peak value of the Autocorrelation of x(t)
Repeat the experiment for the noise variance of 0, 0.1,0.4, and 0.8.
The cross spectral density and phase between x(t) and r(t).
From the phase plot, estimate the slope of the plot in the following table:
N
Slope
128
256
512
1024
What is the relationship between the time delay and the slope of the phase?
[Note: That yet another method of estimating the time delay is via a system
identification approach. This method is described in the appendix for those
interested.]
40
Input, x(n)
Input, y(n)
The cross correlation of the output ,y(n) and the input, x(n) [i.e. R yx ( m ) ] is equal
to its impulse response when the input is white noise. i.e.
R yx ( m ) = h( n )
The objective of this part of the case study is to illustrate this property.
Here is a Matlab program which performs the above simulation:
% M_ex4
% By: saeed Reza Taghizadeh [January 2000]
% Application of cross correlation in System Analysis
% Defining a simple low pass filter
FS=2500;
fHz=[0 250 500 750 1000 1250];
m0=[1 1 1 0 0 0];
FH=fHz/(FS/2);
[b,a]=yulewalk(4,FH,m0);
[h,f]=freqz(b,a,1024);
% Now find the impulse response
N=32;
delta=[1,zeros(1,N)]; % define an impulse
h=filter(b,a,delta);
% apply the impulse as input
subplot(2,1,1);
plot(h/max(h));
% Plot the normalize impulse response
title('True impulse response');
41
grid;
% Now use the cross correlation
% Define the input
for i=1: 128
x=randn(1,N);
% Generate white noise
y=filter(b,a,x);
% Apply it to the filter to find the
output
ryx=xcorr(y,x);
% Estimate the cross correlation
Ryx=fliplr(ryx(1:N)); % Get the appropriate portion
PA(:,i)=Ryx';
% Save the results
end;
clear Ryx;
% Clear the variable Ryx
Ryx=sum(PA')/128;
% Average over all the runs
subplot(2,1,2);
plot(Ryx/max(Ryx));
% Plot the estimated impulse response
title('Estimated Impulse Response');
grid;
10
15
20
25
30
35
25
30
35
10
15
20
42
Note that the cross correlation technique produces a good estimate of the impulse
response of the system.
Note also that since the input is white noise and being random, the experiment will
not be valid for simply one run, hence as shown in the program, the simulation is
carried out for 128 times and the final result is the average of the all the runs. When
simulating with random processes, you must perform a simulation over a number of
runs and average the results for the final outcome.
Investigation
A digital filter is described by the following transfer function:
One of the most simplest and yet effective digital filters are avergers. This is a
system which computes the average of previous q-samples of its input. For example a
5-point averager is defined as:
y( n ) =
1
[x( n ) + x( n - 1 ) + x( n - 2 ) + x( n - 3 ) + x( n - 4 )]
5
43
N=128;
delta=[1, zeros(1,N-1)];
ht=filter(b,a,delta);
plot(ht);
Use the cross correlation procedure illustrated above to estimate its impulse
response by applying white noise with zero mean and unit variance and plot its
response (call this the estimated response, he).
Plot the error as E= The true response (i.e ht) The estimated impulse response (i.e.
he).
Digital filters play an important role in every digital audio or video equipment. Some
simple digital filters are to be examined in this section both analytically and via
simulation.
Investigation
For each of the following systems,:
Determine the transfer function H ( z ) of the system, plot the frequency and
phase response using Matlab.
44
Z -1
2 -6
input
x(n)
Output
y(n)
[Case Number 1]
Z -k
+
x(n)
y(n)
K=4, 5, 6
[Case Number 2]
Z -k
-1
x(n)
y(n)
K=4, 5, 6
[Case Number 3]
45
Appendix A
System Identification approach in Time Delay estimation
Here, we assume that the transmitted signal r(t) is the output of a linear time-invariant
system whose input is the transmitted signal x(t). Another word, we model a system
whose transfer function characteristic processes x(t) in a way as to produce the
transmitted signal r(t) in its output. Once this is done, the information concerning the
estimation of delay (i.e. D) may be extracted from its transfer function. Here is the
mathematical analysis of the above procedure.
Input, x(t)
Input, r(t)
Pxr ( w ) = H ( w ).Pxx ( w )
Which states that The cross spectrum of the input-output, Pxr ( w ) is equal to the
transfer function H ( w ) times the power spectrum of the input signal, Pxx ( w ) .
We therefore have:
H(w ) =
Pxr ( w )
Pxx ( w )
Having obtained the transfer function of the model, the followings may be obtained:
46
a = H(w )
f ( w ) = H ( w ) = Pxr ( w )
The time delay (i.e.D) may be obtained from the slope of the phase angle f ( w ) as
before.
47
48