相关
在信号处理中,cross-correlation是用来度量两个有相对位移的函数(信号)的相似程度的。连续函数(信号)
f
和
g
的相关定义为:
其中 f∗ 表示 f 的复共轭,
离散信号互相关的表示为:
(f⋆g)[n] =def∑m=−∞∞f∗[m] g[m+n]
卷积
卷积定义:
(f∗g)(t) =def∫∞−∞f(τ) g(t−τ)dt=∫∞−∞f(t−τ)g(τ)dτ
cross-correlation 和两个信号的卷积有些相似。而auto-correlation就是函数与自己做cross-correlation,自相关总会在 τ 等于0是达到峰值。
离散信号卷积的定义:
s[n]=(f∗g)[n] =def∑m=0N−1f[m] g[n−m]
相关和卷积性质:
- f(t) 和 g(t) 的互相关等于 f∗(−t) 和 g(t) 的卷积,即: f⋆g=f∗(−t)∗g
- F{f⋆g}=(F{f}∗⋅F{g} ,其中 F 表示傅里叶变换。
- 相关操作,
f(t) 需要取复共轭, f(t) 也不需要翻转 - 卷积操作需要把 f(t) 翻转。
卷积的可视化例子
1、连续信号
2、离散信号
公式
s[n]=(f∗g)[n] =def∑N−1m=0f[m] g[n−m]
中N表示信号
f(n)
的信号长度,
s[n]
为卷积信号结果。序列长度:
len(f(n)+len(n)−1
example1:一维卷积
f(n)=[1 2 3];g(n) = [2 3 1];
s(0) = f(0)g(0-0) + f(1)g(0-1)+f(2)g(0-2)
= 1*2 + 2*0 + 3*0 =2
s(1) = f(0)g(1-0) + f(1)g(1-1) + f(2)g(1-2)
= 1*3 + 2*2 + 3*0 = 7
s(2) = f(0)g(2-0) + f(1)g(2-1) + f(2)g(2-2)
=1*1 + 2*3 + 3*2=13
s(3) = f(0)g(3-0) + f(1)g(3-1) + f(2)g(3-2)
=1*0 + 2*1 + 3*3=11
s(4) = f(0)g(4-0) + f(1)g(4-1) + f(2)g(4-2)
=1*0 + 2*0 + 3*1=3
最终结果为: s(n) = [2 7 13 11 3]
操作步骤:
[2 7 13 7 3]
g(m)
在信号处理中通常叫做滤波器或掩码,卷积相当于掩码g(m)反转后在信号f(n)上平移求和。Matlab计算卷积的函数为conv,
A= [1 2 3];
B = [2,3,1];
convD = conv(A,B)
convD =[ 2 7 13 11 3]
example2二维卷积
二维卷积定义:
s(n1,n2)=∑k1=−∞∞∑k2=−∞∞f(k1,k2)g(n1−k1,n2−k2)
同一维情况一样,先将卷积模板翻转180°,过程如下:
参考文献: