Matlab归一化方法

1,标准归一化。 

  将原始数据集归一化为均值为0、方差1的数据集,归一化公式如下: 

                                          x2=(x-μ)/δ

  其中μ为所有样本数据的均值,δ为所有样本数据的标准差。

 这种方式要求原始数据集的分布近似为正态(高斯)分布。否则归一化的效果很差。

    Matlab中使用mapstd函数:

  mapstd按行逐行地对数据进行标准化处理,将每一行数据分别标准化为均值为ymean(默认为0)、标准差为ystd(默认为1)的标准化数据,

  其计算公式是:y = (x-xmean)*(ystd/xstd) + ymean。

  如果设置的ystd=0,或某行的数据全部相同(此时xstd =0),存在除数为0的情况,则Matlab内部将此变换变为y = ymean。

2,最大最小归一化。 

  将原始数据线性化的方法转换到[0 1]的范围,归一化公式如下: 

                                           x2=(x-xmin)/(xmax-xmin)

  其中 xmax 为样本数据的最大值, xmin 为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致 xmax xmin

的变化,需要重新定义。

Matlab中使用mapminmax函数:

mapminmax按行逐行地对数据进行标准化处理,将每一行数据分别标准化到区间[ymin, ymax]内,其计算公式是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。YMIN和YMAX为调用mapminmax函数时设置的参数,如果不设置这两个参数,这默认归一化到区间[-1, 1]内。标准化处理后的数据为Y,PS为记录标准化映射的结构体。


另外,可参考知乎的这一回答(特征工程的归一化):

点击打开链接

【如果数据较为稳定,不存在极端的最大值最小值,用归一化;

如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响】

你可能感兴趣的:(matlab与信号处理)