一、mapminmax
Process matrices by mapping row minimum and maximum values to [-1 1]
意思是將矩陣的每一行處理成[-1,1]區間,此時對於模式識別或者其他統計學來說,數據應該是每一列是一個樣本,每一行是多個樣本的同一維,即對於一個M*N的矩陣來說,樣本的維度是M,樣本數目是N,一共N列N個樣本。
其主要調用形式有:
1. [Y,PS] = mapminmax(X,YMIN,YMAX) % 將矩陣的每一行壓縮到 [YMIN,YMAX],其中當前行的最大值變為YMAX,最小值變為YMIN
2. [Y,PS] = mapminmax(X,FP) %其中FP為結構體類型,這時就是將矩陣的每一行壓縮到[FP.ymin, FP.ymax]中
例如:
x=[2,3,4,5,6;7,8,9,10,11]; mapminmax(x,0,1) fp.ymin=0; %fp為結構體類型 fp.ymax=1; mapminmax(x,fp)
3. Y = mapminmax('apply',X,PS) %ps為一種映射關系 對其他數值進行歸一化時,這個數必須要在xmin 和xmax之間,不然歸一化的結果,與整體進行歸一化,結果會不一樣
4. X = mapminmax('reverse',Y,PS) % 反歸一化 得到原來的值
5. dx_dy = mapminmax('dx_dy',X,Y,PS) %不常用 根據給定的矩陣X、標准化矩陣Y及映射PS,獲取逆向導數(reverse derivative)。如果給定的X和Y是m行n列的矩陣,那么其結果dx_dy是一個1×n結構體數組,其每個元素又是一個m×n的對角矩陣
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------%
mapminmax的數學公式為y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。如果某行的數據全部相同,此時xmax=xmin,除數為0,則此時數據不變
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------%
二、mapstd 標准化
Process matrices by mapping each row's means to 0 and deviations to 1:將矩陣的每一行映射為0均值1方差的數據。
主要調用形式有:
1. [Y,PS] = mapstd(X,ymean,ystd) % 均值為ymean, 方差為ystd
2. [Y,PS] = mapstd(X,FP)
3. Y = mapstd('apply',X,PS)
4. X = mapstd('reverse',Y,PS)
5. dx_dy = mapstd('dx_dy',X,Y,PS)
和mapminmax類似的,1和2式是對數據X進行標准化,其中ymean和ystd是期望得到數據的每一行的均值和方差,同樣的,我們也可以用一個結構體包含 ymean 和ystd進行帶入
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------%
mapstd公式為y = (x-xmean)*(ystd/xstd) + ymean。如果設置的ystd=0,或某行的數據全部相同(此時xstd =0)
mean默認是對每一列求均值,mean(x,2)是對每一行求均值,std函數默認求的是標准差的無偏估計,有三種用法,s = std(X),s = std(X,flag),s = std(X,flag,dim)
其中flag是無偏估計的參數,flag=0是無偏估計,即默認 是無偏估計,flag=1是有偏估計,dim表示對第幾維求方差,std(X,0,2)表示對X的每一行做無偏的標准差估計。
