|||
由此,我们可以很块的写出最简单的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);
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 04:41
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社