目的:白化处理是为了去除信号的相关性,设白化矩阵为V,则对中心化的数据X用V做线性变换,得到的新的信号满足不相关且为单位方差。
V的求解过程:
1.获得X和X转置矩阵的点积A。
2.求解A的特征值D和特征向量E。
3.构造对角矩阵(左上右下)D2,对角线上的元素为D的值。
4.白化矩阵V就是矩阵D2的平方根与E的转置矩阵的点积。
5.求得V与X的点积就为X白化处理的矩阵。
示例:其中X为2*500的矩阵
X_mean = X.mean(axis=-1) X -= X_mean[:, newaxis] #whiten A = dot(X, X.transpose()) D , E = linalg.eig(A) D2 = linalg.inv(array([[D[0], 0.0], [0.0, D[1]]], float32)) D2[0,0] = sqrt(D2[0,0]); D2[1,1] = sqrt(D2[1,1]) V = dot(D2, E.transpose()) return dot(V, X), V