0% found this document useful (0 votes)
65 views24 pages

Correlation and Auto Correlation

This chapter discusses correlation and auto-correlation of signals. It defines correlation as a measure of similarity between two signals. Cross-correlation is used to calculate the similarity between two signals as they are shifted in time. Auto-correlation calculates the similarity of a signal to itself at different time shifts. Calculating the cross-correlation and auto-correlation of signals allows detection of periodicities in noisy data and measurement of time delays between transmitted and received signals, with applications in sonar and radar ranging.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views24 pages

Correlation and Auto Correlation

This chapter discusses correlation and auto-correlation of signals. It defines correlation as a measure of similarity between two signals. Cross-correlation is used to calculate the similarity between two signals as they are shifted in time. Auto-correlation calculates the similarity of a signal to itself at different time shifts. Calculating the cross-correlation and auto-correlation of signals allows detection of periodicities in noisy data and measurement of time delays between transmitted and received signals, with applications in sonar and radar ranging.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 24

Chapter 8

Correlation and Auto-Correlation of


Signals

Objectives
Develop an intuitive understanding of the crosscorrelation of two signals.
Define the meaning of the auto-correlation of a signal.
Develop a method to calculate the cross-correlation and
auto-correlation of signals.
Demonstrate the relationship between auto-correlation
and signal power.
Demonstrate how to detect periodicities in noisy signals
using auto-correlation techniques.
Demonstrate the application of cross-correlation to sonar
or radar ranging

Correlation
Correlation addresses the question: to what
degree is signal A similar to signal B.
An intuitive answer can be developed by
comparing deterministic signals with stochastic
signals.
Deterministic = a predictable signal equivalent to that
produced by a mathematical function
Stochastic = an unpredictable signal equivalent to that
produced by a random process

Three Signals
>> n=0:23;
>> A=[ones(1,4),zeros(1,8),ones(1,4),zeros(1,8)];
>> subplot (3,1,1),stem(n,A);axis([0 25 0 1.5]);title('Signal A')
>> B1=randn(size(A)); %The signal B1 is Gaussian noise with the same length as A
>> subplot(3,1,2),stem(n,B1);axis([0 25 -3 3]);title('Signal B1')
>> B2=A;
>> subplot(3,1,3),stem(n,B2); axis([0 25 0 1.5]);title('Signal B2');xlabel('Sample')
Signal A

1.5
1
0.5

By inspection, A is correlated
with B2, but B1 is uncorrelated
with both A and B2. This is an
intuitive and visual definition of
correlation.

10

15

20

25

15

20

25

15

20

25

Signal B1
2
0
-2
0

10
Signal B2

1.5
1
0.5
0

10

Sample

Quantitative Correlation
We seek a quantitative and algorithmic way of
assessing correlation
A possibility is to multiple signals sample-bysample and average the results. This would
give a relatively large positive value for identical
signals and a near zero value for two random
signals.
1
r12
N

N 1

x [ n] x [ n]
n 0

Simple Cross-Correlation
Taking the previous signals, A,
B1(random), and B2 (identical to A):
>> A*B1'/length(A)
ans =
-0.0047
>> A*B2'/length(A)
ans =
0.3333

The small numerical


result with A and B1
suggests those signals
are uncorrelated while A
and B2 are correlated.

Simple Cross-Correlation of
Random Signals
>> n=0:100;
>> noise1=randn(size(n));
>> noise2=randn(size(n));
>> noise1*noise2'/length(noise1)
ans =
0.0893

Are the two signals


correlated?

With high probability, the result is expected to be


2/N = 0.1990
for two random (uncorrelated) signals
We would conclude these two signals are uncorrelated.

The Flaw in Simple CrossCorrelation


Original Signal A

0.5

10

15

20

25

20

25

Sample-Shifted Signal

0.5

10

15

In this case, the simple cross-correlation would be zero


despite the fact the two signals are obviously correlated.

Sample-Shifted Cross-Correlation

Shift the signals k steps with respect to one another and calculate
r12(k).

All possible k shifts would produce a vector of values, the full


cross-correlation.
The process is performed in MATLAB by the command xcorr
xcorr is equivalent to conv (convolution) with one of the signals
taken in reverse order.

1
r12 (k )
N

N 1

x [ n] x [ n k ]
n 0

Full Cross-Correlation
>> A=[ones(1,4),zeros(1,8),ones(1,4),zeros(1,8)];
>> A2=filter([0,0,0,0,0,1],1,A);
>> [acor,lags]=xcorr(A,A2);
>> subplot(3,1,1),stem(A); title('Original Signal A')
>> subplot(3,1,2),stem(A2); title('Sample Shifted Signal A2')
>> subplot(3,1,3),stem(lags,acor/length(A)),title('Full Cross-Correlation of A and A2')
Original Signal A

Signal A2 shifted
to the left by 5
steps makes the
signals identical
and r12 = 0.333

0.5
0

10

15

20

25

20

25

Sample Shifted Signal A2

1
0.5
0

10

15

Full Cross-Correlation of A and A2

0.4
0.2
0
-25

-20

-15

-10

-5

10

15

20

25

Full Cross-Correlation of Two


Random Signals
>> N=1:100;
>> n1=randn(size(N));
>> n2=randn(size(N));
>> [acor,lags]=xcorr(n1,n2);
>> stem(lags,acor/length(n1));
0.15
0.1

The crosscorrelation is
random and
shows no peak,
which implies no
correlation

0.05
0
-0.05
-0.1
-0.15
-0.2
-100

-80

-60

-40

-20

20

40

60

80

100

Auto-Correlation
The cross-correlation of a signal with itself
is called the auto-correlation
1 N 1
r11 (k ) x1[n]x1[n k ]
N n 0

The zero-lag auto-correlation is the same


as the mean-square signal power.
1
r11 (0)
N

N 1

1
x
[
n
]
x
[
n
]

1
1
N
n 0

N 1

2
x
[ n]
n 0

Auto-Correlation of a Random
Signal
>> n=0:50;
>> N=randn(size(n));
>> [rNN,k]=xcorr(N,N);
>> stem(k,rNN/length(N));title('Auto-correlation of a Random Signal')
Auto-correlation of a Random Signal

1
0.8

Mathematically, the
auto-correlation of a
random signal is like
the impulse function

0.6
0.4
0.2
0
-0.2
-0.4
-50

-40

-30

-20

-10

10

20

30

40

50

Auto-Correlation of a Sinusoid
>> n=0:99;
>> omega=2*pi*100/1000;
>> d1000=sin(omega*n);
>> [acor_d1000,k]=xcorr(d1000,d1000);
>> plot(k,acor_d1000/length(d1000));
>> title('Auto-correlation of signal d1000')
Auto-correlation of signal d1000

0.5
0.4

The autocorrelation vector


has the same
frequency
components as
the original signal

0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4
-0.5
-100

-80

-60

-40

-20

20

40

60

80

100

Identifying a Sinusoidal Signal


Masked by Noise
>> n=0:1999;
>> omega=2*pi*100/1000;
>> d=sin(omega*n);
>> d3n=d+3*randn(size(d)); % The sinusoid is contaminated with 3X noise
>> d5n=d+5*randn(size(d)); % The sinusoid is contaminated with 5X noise.
>> subplot(3,1,1),plot(d(1:100)),title('Clean Signal')
>> subplot(3,1,2),plot(d3n(1:100)),title('3X Noisy Signal'), axis([0,100,-15,15])
>> subplot(3,1,3),plot(d5n(1:100)),title('5X Noisy Signal'), axis([0,100,-15,15])
Clean Signal

1
0

It is very difficult
to see the
sinusoid in the
noisy signals

-1

10

20

30

40

50

60

70

80

90

100

70

80

90

100

70

80

90

100

3X Noisy Signal
10
0
-10
0

10

20

30

40

50

60

5X Noisy Signal
10
0
-10
0

10

20

30

40

50

60

Identifying a Sinusoidal Signal


Masked by Noise (Normal Spectra)
>> n=0:1999;
>> omega=2*pi*100/1000;
>> d=sin(omega*n);
>> d3n=d+3*randn(size(d)); % The sinusoid is contaminated with 3X noise
>> d5n=d+5*randn(size(d)); % The sinusoid is contaminated with 5X noise.
>> subplot(2,1,1),fft_plot(d3n,1000);title('100 Hz 3X Noise')
>> subplot(2,1,2),fft_plot(d5n,1000);title('100 Hz 5X Noise')
100 Hz 3X Noise

0.5

Normal spectra of
a sinusoid
masked by noise:
High noise power
makes detection
less certain

50

100

150

200

50

100

150

200

250
300
Hz
100 Hz 5X Noise

350

400

450

500

350

400

450

500

0.5

250
Hz

300

Identifying a Sinusoidal Signal Masked by


Noise ( Auto-correlation Spectra)
>> acor3n=xcorr(d3n,d3n);
>> acor5n=xcorr(d5n,d5n);
>> subplot(2,1,1),fft_plot(d3n,1000);title('100 Hz, 3X Noise, Signal Spectrum')
>> subplot(2,1,2),fft_plot(acor3n,1000);title('100 Hz, 3X Noise, Auto-correlation Spectrum')
>> figure, subplot(2,1,1),fft_plot(d5n,1000);title('100 Hz, 5X Noise, Signal Spectrum')
>> subplot(2,1,2),fft_plot(acor5n,1000);title('100 Hz, 5X Noise, Auto-correlation Spectrum')
100 Hz, 5X Noise, Signal Spectrum

The autocorrelation of a
noisy signal
provides greater
S/N in detecting
dominant frequency
components
compared to a
normal FFT

0.5

50

100

150

200

50

100

150

200

600

250
300
350
400
Hz
100 Hz, 5X Noise, Auto-correlation Spectrum

450

500

450

500

400
200
0

250
Hz

300

350

400

Detecting Periodicities in Noisy


Data: Annual Sunspot Data
>> load wolfer_numbers
>> year=sunspots(:,1);
>> spots=sunspots(:,2);
>> stem(year,spots);title('Wolfer Sunspot Numbers');xlabel('Year')
Wolfer Sunspot Numbers

160
140
120
100
80
60
40
20
0
1770

1780

1790

1800

1810

1820
Year

1830

1840

1850

1860

1870

Detecting Periodicities in Noisy


Data: Annual Sunspot Data
>> [acor,lag]=xcorr(spots);
>> stem(lag,acor/length(spots));
>> title('Full Auto-correlation of Wolfer Sunspot Numbers')
>> xlabel('Lag, in years')
>> figure, stem(lag(100:120),acor(100:120)/length(spots));
>> title('Auto-correlation from 0 to 20 years')
>> xlabel('Years')
Full Auto-correlation of Wolfer Sunspot Numbers

4000

Autocorrelation
has detected a
periodicity of 9
to 11 years

3500

3500

3000

3000

2500

2500

2000

2000

1500

1500

1000

1000

500
0
-100

Auto-correlation from 0 to 20 years

4000

500
-80

-60

-40

-20
0
20
Lag, in years

40

60

80

100

10
Years

12

14

16

18

20

Sonar and Radar Ranging


>> x=[ones(1,100),zeros(1,924)];
>> n=0:1023;
>> plot(n,x); axis([0 1023 -.2, 1.2])
>> title('Transmitted Pulse');xlabel('Sample,n')
>> h=[zeros(1,399),1];
% Impulse response for z-400 delay
>> x_return=filter(h,1,x);
% Put signal thru delay filter
>> figure,plot(n,x_return); axis([0 1023 -.2, 1.2])
>> title('Pulse Return Signal');xlabel('Sample, n')
Transmitted Pulse

Pulse Return Signal

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

-0.2

100

200

300

400

500
600
Sample,n

Simulation of a
transmitted and
received pulse (echo)
with a 400 sample
delay

700

800

900

1000

-0.2

100

200

300

400

500
600
Sample, n

700

800

900

1000

Sonar and Radar Ranging


>> [xcor_pure,lags]=xcorr(x_return,x);
>> plot(lags,xcor_pure/length(x))
>> title('Cross-correlation, transmitted and received pure signals')
>> xlabel('lag, samples')

0.1

The cross-correlation
of the transmitted and
received signals
shows they are
correlated with a 400
sample delay

Cross-correlation, transmitted and received pure signals

0.08

0.06

0.04

0.02

-0.02
-1500

-1000

-500

0
lag, samples

500

1000

1500

Sonar and Radar Ranging


>> x_ret_n=x_return+1.5*randn(size(x_return));
>> plot(n,x_ret_n); axis([0 1023 -6, 6])
%Note change in axis range
>> title('Return signal contaminated with noise')
>> xlabel('Sample,n')
Return signal contaminated with noise

The presence of
the return signal in
the presence of
noise is almost
impossible to see

-2

-4

-6

100

200

300

400

500
600
Sample,n

700

800

900

1000

Sonar and Radar Ranging


>> [xcor,lags]=xcorr(x_ret_n,x);
>> plot(lags,xcor/length(x))
0.12
0.1

Cross-correlation
of the transmitted
signal with the
noisy echo clearly
shows a
correlation at a
delay of 400
samples

0.08
0.06
0.04
0.02
0
-0.02
-0.04
-1500

-1000

-500

500

1000

1500

Summary
Cross-correlation allows assessment of
the degree of similarity between two
signals.
Its application to identifying a sonar/radar
return echo in heavy noise was illustrated.

Auto-correlation (the correlation of a signal


with itself) helps identify signal features
buried in noise.

You might also like