def G_inv_mat(x,mode,NT,gs,gd_vec,bas_flag = True, c1_flag = True):
"""
Fast computation of G^{-1}*x and G^{-T}*x
"""
from scipy.signal import lfilter
if mode == 1:
b = lfilter(np.array([1]),np.concatenate([np.array([1.]),-gs]),x[:NT]) + bas_flag*x[NT-1+bas_flag] + c1_flag*gd_vec*x[-1]
#b = np.dot(Emat,b)
elif mode == 2:
#x = np.dot(Emat.T,x)
b = np.hstack((np.flipud(lfilter(np.array([1]),np.concatenate([np.array([1.]),-gs]),np.flipud(x))),np.ones(bas_flag)*np.sum(x),np.ones(c1_flag)*np.sum(gd_vec*x)))
return b
评论列表
文章目录