matlab标准化和反标准化——zscore

先来看自带函数zscore的使用

>> A=[1 2 3;4 5 6];
>> [B,A_mean,A_std]=zscore(A)

B =

   -0.7071   -0.7071   -0.7071
    0.7071    0.7071    0.7071


A_mean =

    2.5000    3.5000    4.5000


A_std =

    2.1213    2.1213    2.1213

>> 

其中A_mean代表A按列求均值,A_std代表每一个列向量的标准差。

接下来看看如何逐步求:

>> A=[ 1 2 3;4 5 6];
>> A_mean=mean(A,1);
>> A_std=std(A);
>> B=(A-repmat(A_mean,size(A,1),1))./repmat(A_std,size(A,1),1);
>> A_mean

A_mean =

    2.5000    3.5000    4.5000

>> A_std

A_std =

    2.1213    2.1213    2.1213

>> B

B =

   -0.7071   -0.7071   -0.7071
    0.7071    0.7071    0.7071

反标准化用到的是前面求到的两个参数:均值和标准差

B.*repmat(A_std,size(A,1),1)+repmat(A_mean,size(A,1),1)

ans =

     1     2     3
     4     5     6
所以在进行标准化和反标准化的时候,一定要记住均值和方差。

你可能感兴趣的:(函数,matlab)