https://www.cnblogs.com/mtcnn/p/9422559.html
https://www.it610.com/article/1292023054091755520.htm
對數據進行規范化和計算K近鄰一樣經常使用,所以用MATLAB直接實現一個函數保存在博客上,這樣每次使用的時候直接從這里復制一份就可以了,所以說博客對於個人來說也是一個移動的筆記,只要在一個有網絡的地方就可以查閱。
normalize的MATLA函數代碼實現如下所示,要求輸入三個參數:數據矩陣,規范化后的最小值lowbound和規范化后的最大值upbound。其中數據矩陣要求每一行表示一個多維樣本點。函數將輸出一個范圍在lowbound到upbound之間的新的數據矩陣。
function [ Result ] = normalize( Data,lowbound,upbound )
%將數據矩陣Data進行規范化
%新的上界是upbound,新的下界是lowbound
%要求輸入的數據矩陣中每一行表示一個多維樣本點
msize = size(Data);
Result = zeros(msize(1),msize(2));%存儲結果
mins = Data(1,:);%儲存每一維的最小值
maxs = Data(1,:);%儲存每一維的最大值
%%%%
% 計算每一維度的最小值與最大值
%
%%%%
for i = 1:msize(1)
for j = 1:msize(2)
if Data(i,j)maxs(j)
maxs(j) = Data(i,j);
end
end
end
for i = 1:msize(1)
for j = 1:msize(2)
Result(i,j) = lowbound + (Data(i,j)-mins(j))/(maxs(j)-mins(j))*(upbound-lowbound);
end
end
end
MATLAB其實是有現成的函數,也可以直接調用MATLAB中的庫函數。
matlab 工具函數 —— normalize(歸一化數據)——推薦
function [Samples2]=normalize(Samples)
[M,N] = size(Samples);
Samples2 = zeros(M,N); %初始化Samples2數組(M*N)
for i=1:N
allAtr = Samples(:,i);
STD = std(allAtr); % 求標准差
MEAN = mean(allAtr); % 求均值
x = (allAtr-MEAN)/STD;
Samples2(:,i)=x;
end
end
