对数据进行规范化和计算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