矩阵按列按行归一化到L2范数的原理和最精简Matlab代码
2014-11-17 09:37
148 查看
在模式识别和机器学习的数据预处理过程中,对数据集按行或者按列进行L2范数归一化是一种常见的归一化方式,因此本文将介绍对向量进行L2范数归一化的原理和方法,并给出相关的Matlab源代码,供后学者作为基础知识参考使用。
由此,我们可以很块的写出最简单的matlab源代码如下:
首先按行归一化:
% 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
按列归一化:
% 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命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看错是自己水平的一种进阶吧。
% 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);
本文转自:http://blog.sciencenet.cn/blog-810210-655011.html
由此,我们可以很块的写出最简单的matlab源代码如下:
首先按行归一化:
% 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
按列归一化:
% 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命令得到另一种更加简洁更加快速的代码,只是这种代码对于初学者理解起来比较费劲。可以看错是自己水平的一种进阶吧。
% 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);
本文转自:http://blog.sciencenet.cn/blog-810210-655011.html
相关文章推荐
- 矩阵按列按行归一化到L2范数的原理和最精简Matlab代码(转)
- [转]矩阵按列按行归一化到L2范数的原理和最精简Matlab代码
- matlab 矩阵按列按行归一化
- matlab转化为opencv代码过程中按行扩大矩阵
- MATLAB中对一个矩阵的行(列)归一化为二范数是1的简洁代码:一句实现
- 向量和矩阵的范数及MATLAB调用函数
- JS短路原理的应用示例 精简代码的途径
- hog特征原理详解及matlab代码学习笔记
- Matlab Tricks(七)—— 矩阵列/列的归一化/单位化(normalize)
- Matlab中矩阵的乘法C++代码
- 以前写的matlab代码,有部分是从txt导数据到matlab里,还有合并矩阵
- JS短路原理的应用示例 精简代码的途径
- matlab 子系统重用,精简自动代码
- js中||和&&短路原理,精简代码方法
- 转置矩阵的分块并行乘法(C语言实现),计算矩阵C[rawn][rawn]=A[rawm][rawn]'*B[rawm][rawn],子块大小为S*T,其算法实现原理参加本代码的附件。
- \t\tJS短路原理的应用 精简代码的途径
- 模式识别 - 特征归一化 及 测试 代码(Matlab)
- 模糊C均值聚类算法(原理+Matlab代码)
- 最小二乘法的一般形式和矩阵形式原理推导和代码实现
- 有关线性代数的Matlab代码笔记(4)——生成矩阵,消元矩阵