网址: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()
-
计算这些序列的自相关和互相关。输出滞后,这样您就不必跟踪它们。将结果归一化,使自相关在零滞后处具有单位值。
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()
python