def nfiedler(A=None, tol=1e-12):
"""
:param A: motif adjacency matrix A
:param tol: no uesd in this program
:return: the fiedler vector of the normalized laplacian of A
(fiedler vector: eigenvector corresponding to the second smallest eigenvalue)
"""
if A is None:
print('Error! matrix A is None..')
return None
L = nlaplacian(A)
# print('L\n', L, '\n')
n = A.shape[0]
# print(n)
eigvalue, eigvector = SLA.eigh(L + np.eye(n))
# print('eigvalue\n', eigvalue)
# print('eigvector\n', eigvector[:, 0], '\n\n', eigvector[:, 1])
# print(L + np.eye(n))
# print('eigvalues\n', eigvalue)
# print('eigvalue\n', eigvalue[:2])
# print('eigvector\n', eigvector[0:1])
# print(eigvalue)
x = eigvector[:, 1]
# print('\n\nx\n', x, '\n')
# print(x)
x = x / (np.sqrt(np.sum(A, 1)).T)
# x = x.T
# print('\nx\n', x.T)
eigvalue = eigvalue[1] - 1
# print('\neigvalue\n', eigvalue)
# print('\nnp.argsort(e+igvector[1])\n', np.argsort(eigvector[1]), '\n')
# print('eigvector[1]\n', eigvector[1])
# print('\nx\n', x)
# print('\neigvalue\n', eigvalue)
return x, eigvalue
评论列表
文章目录