Skip to content

网址:https://ww2.mathworks.cn/help/signal/ug/cross-correlation-with-multichannel-input.html
描述:本案例由2个示例构成:

-

-

针对以上案例,采用Python语言实现。

-

生成三个包含 11 个样本的指数序列,这些样本由$0.4^{n}$、$0.7^{n}$和$0.999^{n}$ $(n\geq0)$给出。绘制这些序列。

python
import numpy as np  
import matplotlib.pyplot as plt 

x = np.arange(0,11)  
y1 = 0.4**x 
y2 = 0.7**x 
y3 = 0.999**x 
fig = plt.figure()  
ax1 = fig.add_subplot(111)   
ax1.scatter(x,y1,c = 'r',marker = 'o')  
plt.ylim(-0.2,1.2)
plt.show()
fig = plt.figure()  
ax1 = fig.add_subplot(111)   
ax1.scatter(x,y2,c = 'r',marker = 'o')  
plt.ylim(-0.2,1.2)
plt.show()
fig = plt.figure()  
ax1 = fig.add_subplot(111)   
ax1.scatter(x,y3,c = 'r',marker = 'o')  
plt.ylim(-0.2,1.2)
plt.show()

png

png

png

-

计算这些序列的自相关和互相关。输出滞后,这样您就不必跟踪它们。将结果归一化,使自相关在零滞后处具有单位值。

python
cx=np.arange(-10,11)
cq11=np.correlate(y1,y1,'full')
cq12=np.correlate(y1,y2,'full')
cq13=np.correlate(y1,y3,'full')
cq21=np.correlate(y2,y1,'full')
cq22=np.correlate(y2,y2,'full')
cq23=np.correlate(y2,y3,'full')
cq31=np.correlate(y3,y1,'full')
cq32=np.correlate(y3,y2,'full')
cq33=np.correlate(y3,y3,'full')
c11=cq11/cq11[10]
c12=cq12/(cq11[10]*cq22[10])**0.5
c13=cq13/(cq11[10]*cq33[10])**0.5
c21=cq21/(cq11[10]*cq22[10])**0.5
c22=cq22/cq22[10]
c23=cq23/(cq33[10]*cq22[10])**0.5
c31=cq31/(cq11[10]*cq33[10])**0.5
c32=cq32/(cq33[10]*cq22[10])**0.5
c33=cq33/cq33[10]
fig = plt.figure(dpi=300,figsize=(8,4))  
ax1 = fig.add_subplot(331)   
ax1.set_title('C$_{11}$')
ax1.scatter(cx,c11,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(332)   
ax1.set_title('C$_{12}$')
ax1.scatter(cx,c12,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(333)   
ax1.set_title('C$_{13}$')
ax1.scatter(cx,c13,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(334)   
ax1.set_title('C$_{21}$')
ax1.scatter(cx,c21,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(335)   
ax1.set_title('C$_{22}$')
ax1.scatter(cx,c22,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(336)   
ax1.set_title('C$_{23}$')
ax1.scatter(cx,c23,c = 'r',marker = 'o')  
plt.ylim(-0.2,1) 
ax1 = fig.add_subplot(337)   
ax1.set_title('C$_{31}$')
ax1.scatter(cx,c31,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(338)   
ax1.set_title('C$_{32}$')
ax1.scatter(cx,c32,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
ax1 = fig.add_subplot(339)   
ax1.set_title('C$_{33}$')
ax1.scatter(cx,c33,c = 'r',marker = 'o')  
plt.ylim(-0.2,1)
plt.show()

png

python