Professional Documents
Culture Documents
EXPERIMENT 4
Aim : To perform correlation of two discrete signals using graphical method.
Theory :
Using the definition for the total discrete-time signal energy, we see that for
, the autocorrelation function represents the total signal energy,
that is
assumptions that the signals and have finite total energy. It can
that the
Code :
def cross_corelate(x,y,x_start,y_start):
print("x(n) :",x)
print("x(n) origin:", x_start)
print("y(n) :",y)
old_y = y[:]
y.reverse()
table = [['x(n)\\y(-n)',]+y,]
r_xy_start = max(x_start,y_start)
row,s = [x_i,],0
r_xy[i+j] += x_i*y_i
row.append(x_i*y_i)
table.append(row)
print("y(-n) :",y)
print("\nTable:")
plot_signals(x,y,r_xy,x_start,y_start,r_xy_start,"x(n)","y(-n)","r_xy")
print("-----------------------------------------------------\n\n\n\n")
print("y(n) :",y)
print("x(n) :",x)
x.reverse()
y = old_y
table = [['y(n)\\x(-n)',]+x,]
r_yx_start = max(x_start,y_start)
row,s = [y_i,],0
r_yx[i+j] += x_i*y_i
row.append(x_i*y_i)
table.append(row)
print("x(-n) :",x)
print("\nTable:")
plot_signals(y,x,r_xy,y_start,x_start,r_xy_start,"y(n)","x(-n)","r_yx")
print("-----------------------------------------------------\n\n\n\n")
def auto_corelate(x,y,x_start,y_start):
x_rev = list(reversed(x))
y_rev = list(reversed(y))
print("x(n) :",x)
print("x(-n) :",x_rev)
table = [['x(n)\\x(-n)',]+x_rev,]
r_xx_start = max(x_start,x_rev_start)
for i,x_i in enumerate(x):
row,s = [x_i,],0
r_xx[i+j] += x_i*y_i
row.append(x_i*y_i)
table.append(row)
print("\nTable:")
plot_signals(x,x_rev,r_xx,x_start,x_rev_start,r_xx_start,"x(n)","x(-n)","r_xx")
print("-----------------------------------------------------\n\n\n\n")
print("y(n) :",y)
print("y(-n) :",y_rev)
table = [['y(n)\\y(-n)',]+y_rev,]
r_yy_start = max(y_start,y_rev_start)
r_yy[i+j] += x_i*y_i
row.append(x_i*y_i)
table.append(row)
print("\nTable:")
plot_signals(y,y_rev,r_yy,y_start,y_rev_start,r_yy_start,"y(n)","y(-n)","r_yy")
print("-----------------------------------------------------\n\n\n\n")
def plot_signals(x,y,r,x_start,y_start,r_start,x_str,y_str,r_str):
ax = plt.subplot(3,1,1)
plt.stem(x_ticks,x)
plt.yticks(range(int(start), int(end+1)))
plt.xticks(x_ticks)
plt.title(x_str)
ax = plt.subplot(3,1,2)
plt.stem(y_ticks,y)
start, end = ax.get_ylim()
plt.yticks(range(int(start), int(end+1)))
plt.xticks(y_ticks)
plt.title(y_str)
ax = plt.subplot(3,1,3)
plt.stem(r_ticks,r)
plt.yticks(range(int(start), int(end+1)))
plt.xticks(r_ticks)
plt.title(r_str)
plt.tight_layout()
plt.show()
cross_corelate([3,3,4,5],[2,6,2],0,0)
auto_corelate([3,3,4,5],[2,6,2],0,0)
Output :
Conclusion :