def compute_mtx_obj(GtG_lst, Tbeta_lst, Rc0, num_bands, K):
"""
compute the matrix (M) in the objective function:
min c^H M c
s.t. c0^H c = 1
:param GtG_lst: list of G^H * G
:param Tbeta_lst: list of Teoplitz matrices for beta-s
:param Rc0: right dual matrix for the annihilating filter (same of each block -> not a list)
:return:
"""
mtx = np.zeros((K + 1, K + 1), dtype=float) # <= assume G, Tbeta and Rc0 are real-valued
for loop in range(num_bands):
Tbeta_loop = Tbeta_lst[loop]
GtG_loop = GtG_lst[loop]
mtx += np.dot(Tbeta_loop.T,
linalg.solve(np.dot(Rc0, linalg.solve(GtG_loop, Rc0.T)),
Tbeta_loop)
)
return mtx
评论列表
文章目录