MATLAB實現規范化(normalize)數據的函數實現


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM