向量归一化的matlab程序,向量X的归一化及其Matlab简单示例
徐海蛟博士
歸一化是要把需要處理的數據經過處理后限制在一定范圍內,例如:[-1,1]或[0,1]。歸一化是為了后續數據處理的方便,也使得算法程序收斂加快。
在Matlab里面,歸一化的方法共有3種:
(1)mapminmax% 范圍映射
(2)mapstd% 均值與偏差
(3)自定義函數
在數據預處理過程中,對數據集按行或者按列(統一記為向量X)進行L1或者L2范數歸一化是一種常見的處理方式。
對于向量X(x1,x2,...,xn),記norm(X)為向量X的范數,那么,X的L1范數為xi絕對值之和,L2范數為xi的平方和,而其Lp范數:向量X各個元素xi絕對值的p次方求和后再求1/p次方。這里,i = 1,2,...,n。則X歸一化后的向量是X'(x1',x2',...,xn'), xi' = xi/norm(X)。
童鞋們,可以跟著徐海蛟老師寫出最簡單的matlab示例代碼:
%% 徐海蛟博士: L1范數-行歸一化
A = [1 2 3; 4 5 6];
[m n] = size(A);
% 歸一化
for i = 1:m
A(i,:) = A(i,:)/norm(A(i,:),1);
end
%% 徐海蛟博士: L2范數-行歸一化
A = [1 2 3; 4 5 6];
[m n] = size(A);
% 歸一化
for i = 1:m
A(i,:) = A(i,:)/norm(A(i,:));
end
這里,Lp范數 norm(X,p) = sum(abs(A).p)^(1/p)。那么,
L1范數norm(X) = sum(abs(A)) = norm(X,1),
L2范數norm(X) = sum(A.^2)^(1/2) = norm(X,2)。
若去掉循環,更高效的MatLab代碼如下。
% 徐海蛟博士: L1范數-行歸一化
A = [1 2 3; 4 5 6];
A = A./repmat( sum(abs(A),2), 1, size(A,2) );
% 徐海蛟博士: L2范數-行歸一化
A = [1 2 3; 4 5 6];
A = A./repmat( sqrt(sum(A.^2,2)), 1, size(A,2) );
總結
以上是生活随笔為你收集整理的向量归一化的matlab程序,向量X的归一化及其Matlab简单示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tornado 获取html,pytho
- 下一篇: spark mysql 交互_Spark