Open In App

How to plot the coherence between two signals in Python?

Improve
Improve
Like Article
Like
Save
Share
Report

Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack.
 

What is Coherence and and Correlation?


Coherence: It is used for measuring the correlation between two signals.
Correlation : It defines the degree of dependency of one quantity over the other. If one quantity is totally dependent on other then the correlation between them is said to be 1. If two quantities or variables are not related to each other then they have zero correlation.
Coherence is the normalized cross-spectral density:
 

    \[Cxy = \frac{|Pxy|^2}{Pxx-Pyy}\]


 


In Python, Matplotlib.pyplot.cohere() is used to find the coherence between two signals.


 

Syntax: matplotlib.pyplot.cohere(x, y, NFFT=256, Fs=2, Fc=0, detrend=, window=, noverlap=0, pad_to=None, sides=’default’, scale_by_freq=None, *, data=None, **kwargs)

Parameters: This method accepts the following parameters-
1)x, y : It is the sequence of data. 
2) Fs: It is a scalar parameter and its default value is 2, 
3) window: This parameter takes a data segment as an argument and returns the windowed version of the segment. Its default value is window_hanning() 
4) sides: This parameter specifies which sides of the spectrum to return. This can have the following values: ‘default’, ‘one-sided’, and ‘two-sided’. 
5) pad_to : This parameter contains the integer value to which the data segment is padded. 
6) Fc: This parameter also contains the integer value to offsets the x extents of the plot to reflect the frequency range. Its default value is 0 
7) NFFT: This parameter contains the number of data points used in each block for the FFT. 
8) detrend: This parameter contains the function applied to each segment before fft-ing, designed to remove the mean or linear trend {‘none’, ‘mean’, ‘linear’}. 
scale by freq: This parameter allows for integration over the returned frequency values. 
9) overlap : This parameter is the number of points of overlap between blocks. 
10) Fc : This parameter is the center frequency of x.


Returns : This method returns the following- 
1) Cxy: This returns the coherence vector. 
2) freqs: This returns the frequencies for the elements in Cxy.
 

The resultant is (Cxy, freqs)


 

Let’s see the below examples to where we will find the coherence between the two signals using the above function.


 

Example 1:


 

python3

import numpy as np
import matplotlib.pyplot as plt
 
 
# signal 1
time1=np.arange(0,100,0.1)
cossignal1= np.cos(time1)
 
plt.plot(cossignal1)
plt.title("Signal 1")
plt.show()
 
 
# signal 2
time2=np.arange(0,100,0.1)
cossignal2= np.cos(time2)
 
plt.plot(cossignal2)
plt.title("Signal 2")
plt.show()
 
# Store the value of correlation in a
# variable say 'cor' using the following code:
cor=plt.cohere(cossignal1,cossignal2)
 
 
# plot the coherence graph
plt.show()

                    

Output:


Example 2: Coherence between sine and cosine signal
 

Python3

import numpy as np
import matplotlib.pyplot as plt
 
 
# signal 1
time1 = np.arange(0, 100, 0.1)
sinsignal1 = np.sin(time1)
 
plt.plot(sinsignal1)
plt.title("Sine Signal")
plt.show()
 
# signal 2
time2 = np.arange(0, 100, 0.1)
cossignal2 = np.cos(time2)
 
plt.plot(cossignal2)
plt.title("Code Signal")
plt.show()
 
# Store the value of correlation in
# a variable say 'cor' using the
# following code
cor = plt.cohere(sinsignal1, cossignal2)   
 
# Plot the coherence graph
plt.show()

                    

Output:
 



Last Updated : 01 Feb, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads