网站优化建设哈尔滨,个人网站注册名称,怎么做淘宝客的跳转网站,wordpress安装模板文件GSC#xff08;generalized sidelobe canceller, 广义旁瓣消除器#xff09;可以将有约束的LCMV算法转换为无约束的实现结构。网上关于GSC的介绍对细节方面介绍得不详细#xff0c;并且主要是应用在窄带。宽带的GSC应用范围也比较广泛#xff0c;例如在智能音箱等产品的麦克…GSCgeneralized sidelobe canceller, 广义旁瓣消除器可以将有约束的LCMV算法转换为无约束的实现结构。网上关于GSC的介绍对细节方面介绍得不详细并且主要是应用在窄带。宽带的GSC应用范围也比较广泛例如在智能音箱等产品的麦克风阵列信号处理中GSC作为核心算法。本文介绍了GSC的结构以及相关的公式推导主要关注时域宽带GSC的实现并给出了python的实现代码示例。关于波束形成基础知识请参考宽带波束形成窄带波束形成
GSC的结构
将有约束的LCMV线性约束最小方差 波束形成器转换为无约束的GSC结构如下图所示 (a) 有约束的LCMV波束形成器
(b) 将权重向量分解为两个正交的成分和即
(c) 进一步将补空间分解为自适应部分和固定部分从而得到无约束自适应问题 上面是对通过伪逆的方法求的解。
定义矩阵的秩线性独立的部分因为向量位于的补空间所以阻塞矩阵有列行 可以通过正交方法例如QR分解从中获取。还可以通过CCD方法以及SVD分解方法我们在后面的博客文章中介绍。 上图的GSC是时域的处理结构输入是n时刻的的表达式请参考上一篇博客宽带波束形成
的是长度为的列向量。 python的宽带如麦克风阵列信号处理GSC实现代码
import numpy as npmatrices (C,fr,Bk) # C,fr,Bk是固定的矩阵系数计算方法下一篇博客会讲到coeficientes np.dot(matrices[0],np.dot(np.linalg.inv(np.dot(matrices[0].T, matrices[0])),matrices[1])) # wq
w_adp np.zeros(Bk.shape[1])muu 2e-10 # LMS步长
err np.zeros(M_Sigs.shape[1])
Xd np.zeros((M,J))
M_S np.concatenate((M_Sigs[:,::-1],Xd),axis1)
for i in range(1,M_S.shape[-1]-J):Xmj M_S[:,-i-J:-i].T.flatten()out_up np.dot(coeficientes,Xmj) # 固定滤波x_u np.dot(matrices[2].T,Xmj) # 经过阻塞矩阵err[i] out_up - np.dot(x_u,w_adp) # 计算输出误差信号w_adp muu*err[i]*x_u # 更新自适应滤波器的权重
后面会进一步介绍GSC的加速算法如子带GSCPBFDAF GSC等等。