① 如何用matlab將矩陣按列歸一化
矩陣按列按行歸一化到L2范數的原理和最精簡Matlab代
在模式識別和機器學習的數據預處理過程中,對數據集按行或者按列進行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);