15 互相关 xcorr
15 互相关 xcorr
用途
两信号的时延估计,行波定位、双端测距的核心工具。
示例(5 张)
15-1 故障行波到达两端的时间延迟估计

15-2 两个测点电压信号的互相关

15-3 风速与风电出力的互相关

15-4 系统输入与输出的互相关

15-5 气温与负荷的滞后互相关

代码
以下 5 个函数取自 code/第二批_信号分析261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。
# 摘自 code/第二批_信号分析261107.py
def xc_01():
"""故障行波到达两端的时间延迟估计。"""
fig, ax = new_fig()
rng = np.random.default_rng(1501)
fs = 1e6
t = np.arange(0, 500e-6, 1 / fs)
x = rng.normal(0, 0.02, t.size)
x += 1.0 * np.exp(-((t - 120e-6) / 3e-6) ** 2)
y = rng.normal(0, 0.02, t.size)
y += 0.8 * np.exp(-((t - 168e-6) / 3e-6) ** 2)
ax.xcorr(x, y, maxlags=300, color=C1, lw=0.9)
ax.grid(False)
ax.set_xlabel("滞后 " + IT["tau"] + " / μs")
ax.set_ylabel("互相关系数")
save(fig, "15_互相关", "15_互相关_行波时延估计")
def xc_02():
"""两个测点电压信号的互相关。"""
fig, ax = new_fig()
t, u1 = _sig(seed=1502, dur=1.0)
rng = np.random.default_rng(15021)
shift = 18
u2 = np.roll(u1, shift) * 0.9 + rng.normal(0, 0.05, u1.size)
ax.xcorr(u1, u2, maxlags=60, color=C5, lw=0.9)
ax.grid(False)
ax.set_xlabel("滞后 " + IT["tau"] + " / 采样点")
ax.set_ylabel("互相关系数")
save(fig, "15_互相关", "15_互相关_双测点互相关")
def xc_03():
"""风速与风电出力的互相关。"""
fig, ax = new_fig()
rng = np.random.default_rng(1503)
fs = 1.0
t = np.arange(0, 1024, 1 / fs)
v = 8.5 + 1.5 * np.sin(2 * np.pi * t / 96) + rng.normal(0, 0.6, t.size)
p = np.roll(0.45 * v ** 3, 3) + rng.normal(0, 150, t.size)
ax.xcorr(v, p, maxlags=48, color=C3, lw=0.9)
ax.grid(False)
ax.set_xlabel("滞后 " + IT["tau"] + " / h")
ax.set_ylabel("互相关系数")
save(fig, "15_互相关", "15_互相关_风速功率互相关")
def xc_04():
"""系统输入与输出的互相关。"""
fig, ax = new_fig()
t, u = _sig(seed=1504, dur=1.0)
rng = np.random.default_rng(15041)
i = np.roll(u, 12) * 0.85 + rng.normal(0, 0.08, u.size)
ax.xcorr(u, i, maxlags=60, color=C1, lw=0.9)
ax.grid(False)
ax.set_xlabel("滞后 " + IT["tau"] + " / 采样点")
ax.set_ylabel("互相关系数")
save(fig, "15_互相关", "15_互相关_输入输出互相关")
def xc_05():
"""气温与负荷的滞后互相关。"""
fig, ax = new_fig()
rng = np.random.default_rng(1505)
fs = 24.0
t = np.arange(0, 480, 1 / fs)
temp = 28 + 6 * np.sin(2 * np.pi * t / 24) + rng.normal(0, 1.0, t.size)
load = np.roll(temp, 48) * 8.2 + 420 + rng.normal(0, 22, t.size)
ax.xcorr(temp, load, maxlags=120, color=C3, lw=0.9)
ax.grid(False)
ax.set_xlabel("滞后 " + IT["tau"] + " / h")
ax.set_ylabel("互相关系数")
save(fig, "15_互相关", "15_互相关_气温负荷滞后相关")
说明
- 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的二级/三级标题承担。
- 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。

浙公网安备 33010602011771号