随机矩阵单位化
方法一. A=A*diag(1./sqrt(diag(A'*A)));
例子.A =
0.1253 -1.1465 1.1892
0.2877 1.1909 -0.0376
1. A'*A =
0.0985 0.1989 0.1382
0.1989 2.7327 -1.4082
0.1382 -1.4082 1.4155
2. >> diag(A'*A)=
0.0985
2.7327
1.4155
3. >> sqrt(diag(A'*A))=
0.3138
1.6531
1.1898
4. >> 1./ sqrt(diag(A'*A))=
3.1868
0.6049
0.8405
5. >> diag(1./ sqrt(diag(A'*A)))
3.1868 0 0
0 0.6049 0
0 0 0.8405
6. B=A* diag(1./ sqrt(diag(A'*A)));此时B’*B对角线元素等于1,表明B的3个列向量已经单位化,即列向量的2范数等于1;但B的行向量不满足这个性质。
B =
0.3994 -0.6935 0.9995
0.9168 0.7204 -0.0316
B'=
0.3994 0.9168
-0.6935 0.7204
0.9995 -0.0316
>>B'*B
ans =
1.0000 0.3835 0.3702
0.3835 1.0000 -0.7160
0.3702 -0.7160 1.0000
B*B'
ans =
1.6395 -0.1651
-0.1651 1.3605
方法二、针对每一个列向量进行
A =
0.1253 -1.1465 1.1892
0.2877 1.1909 -0.0376
1. sqrt(sum(A(:,:).^2))=
0.3138 1.6531 1.1898
2. >>1./sqrt(sum(A(:,:).^2))=
3.1868 0.6049 0.8405
3. C=A*diag(1./sqrt(sum(A(:,:).^2)))
C =
0.3994 -0.6935 0.9995
0.9168 0.7204 -0.0316
4. C=B,这时有C’*C对角线元素等于1.