L2范数归一化

L2范数归一化_第1张图片

按行归一化:

1

2

3

4

5

6

7

% Examples

A=[3 4;5 12];

[m n] = size(A);

% normalize each row to unit

for i = 1:m

    A(i,:)=A(i,:)/norm(A(i,:));

end

按列归一化。

1

2

3

4

5

% normalize each column to unit

A=[3 4;5 12];

for i = 1:n

    A(:,i)=A(:,i)/norm(A(:,i));

end

然而,上述代码最能实现功能,但并不是最优的,它只是一种对该过程的最佳理解代码。在Matlab中,for循环是一件非常费时间的结构,因此我们在代码中应该尽量少用for循环。由此,我们可以用repmat命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看做是自己水平的一种进阶吧。

1

2

3

4

%  normalize each row to unit

A = A./repmat(sqrt(sum(A.^2,2)),1,size(A,2));

%  normalize each column to unit

A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);

 参考:https://www.cnblogs.com/hxsyl/p/4591008.html

我于是就想着为什么要做这么多的归一化,首先我们要知道归一化是什么:

之前一直不清楚,为什么要做这么多的归一化,直到想到了对称矩阵(请原谅数学不好的我,在理解的路上磕磕绊绊)。

矩阵的列归一化,就是将矩阵每一列的值,除以每一列所有元素平方和的绝对值,这样做的结果就是,矩阵每一列元素的平方和为1了。

假设通过上述归一化处理的样本集合为X,x的没一列的平方和都是1,假设X是25*1000的一个矩阵好了,那么X‘为一个1000*25的矩阵,Yang等人的方法里用到了

A=X’*X。那么通过上面的那些变化,X的每列元素的平方和都是1,那么A的对角线元素都是1,且A是关于对角线对称的。那么A就是一个对角线元素全为1的对称矩阵,而实对称矩阵具有如下的性质:

举个代码例子:

A=[1,2,3,4;5,6,7,8;9,10,11,12];
A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);
X=A';
fia=X*A

L2范数归一化_第2张图片

你可能感兴趣的:(归一化)