当前位置:   article > 正文

使用matlab进行数据标准化的两种方法_matlab标准化函数

matlab标准化函数

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

使用matlab处理数据标准化一般有两种方法,分别实现如下:
方法一:极值标准化
这里的min表示极小值,max表示极大值通过以下公式处理后,矩阵元素落在[0,1]之间在这里插入图片描述
%定义函数,根据极大值和极小值进行标准化
function out=mystand(A)
out=[];
n=size(A,1);%获取行数
minA = min(A); %获取极小值
maxA = max(A);%获取极大值
out = (A-repmat(minA,n,1))./repmat(maxA-minA,n,1);%使用repmat对每个元素进行重复处理,记得这里一定要用./
end
调用:
A=randn(20,20)*2+1;
mystand(A);
运行结果如下:
在这里插入图片描述
可以看到所有的数据都落到[0,1]之间。
方法二:Z标准化,也叫z-score标准化
思路:这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。
经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
在这里插入图片描述
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
实现代码如下:
function out=myzscore(A)
temp =[];
demesion=size(A);
meanA=mean(A);
stdA=std(A);
for i=1:numel(A)
temp = [temp (A(i)-meanA)/stdA];
end
out=reshape(temp,demesion);
end
调用:
A=randn(20,20)*2+1;
myzscore(A);
结果:

在这里插入图片描述
作图发现符合正态分布

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/105512
推荐阅读
相关标签
  

闽ICP备14008679号