MATLAB数据矩阵单位化,归一化,标准化

转自:http://blog.csdn.net/yb536/article/details/41050181

作者:圣僧散散心

-------------------------------------------------------------------------------------------------------------


1.数据矩阵单位化(X/||X||)

方法一:
  1. %%矩阵的列向量单位化  
  2. %输出矩阵Y为单位化矩阵  
  3. %方法即是矩阵中所有元素除以该元素所在列向量的二范数  
  4. clc;  
  5. clear;  
  6. X=[790 3977 849 1294 1927 1105 204 1329  
  7.     768 5037 1135 1330 1925 1459 275 1487  
  8.     942 2793 820 814 1617 942 155 976  
  9.     916 2798 901 932 1599 910 182 1135  
  10.     1006 2864 1052 1005 1618 839 196 1081];  
  11. %方法一  
  12. [m,n]=size(X);  
  13. for i=1:n  
  14.     A(1,i)=norm(X(:,i));  
  15. end  
  16. A=repmat(A,m,1);  
  17. Y=X./A;  
输出结果:
Y =
    0.3974    0.4932    0.3959    0.5290    0.4941    0.4601    0.4422    0.4890
    0.3863    0.6247    0.5292    0.5437    0.4936    0.6074    0.5961    0.5471
    0.4738    0.3464    0.3823    0.3327    0.4146    0.3922    0.3360    0.3591
    0.4608    0.3470    0.4201    0.3810    0.4100    0.3789    0.3945    0.4176
    0.5060    0.3552    0.4905    0.4108    0.4149    0.3493    0.4249    0.3977

方法二:
  1. %%矩阵的列向量单位化  
  2. %输出矩阵Y为单位化矩阵  
  3. %方法即是矩阵中所有元素除以该元素所在列向量的二范数  
  4. clc;  
  5. clear;  
  6. X=[790 3977 849 1294 1927 1105 204 1329  
  7.     768 5037 1135 1330 1925 1459 275 1487  
  8.     942 2793 820 814 1617 942 155 976  
  9.     916 2798 901 932 1599 910 182 1135  
  10.     1006 2864 1052 1005 1618 839 196 1081];  
  11. %方法二  
  12. [m,n]=size(X);  
  13. a=0;  
  14. for j=1:n  
  15.     for i=1:m  
  16.         a=a+X(i,j)^2;  
  17.     end  
  18.     A(1,j)=sqrt(a);  
  19.     a=0;  
  20. end  
  21. A=repmat(A,m,1);  
  22. Y=X./A  
输出结果:
Y =
    0.3974    0.4932    0.3959    0.5290    0.4941    0.4601    0.4422    0.4890
    0.3863    0.6247    0.5292    0.5437    0.4936    0.6074    0.5961    0.5471
    0.4738    0.3464    0.3823    0.3327    0.4146    0.3922    0.3360    0.3591
    0.4608    0.3470    0.4201    0.3810    0.4100    0.3789    0.3945    0.4176
    0.5060    0.3552    0.4905    0.4108    0.4149    0.3493    0.4249    0.3977
结果同上。


2.数据矩阵归一化

归一化,将不同样本的同一维度的数据归一化。
函数:mapminmax
默认规范范围(-1,1),对于图像数据而言,可使用
np.array(image) / 127.5 - 1. (-1, 1)
若想将规范范围划为(0,1),可编写Y=mapminmax(A,0,1);
也可以自己实现(x-x_min) / (x_max - x_min)
此函数规整行向量中最大最小值,如果运用此函数,则A矩阵每一行为一个维度,每一列是一个样本。
  1. %%矩阵数据归一化  
  2. %归一化作用是处理奇异样本矩阵  
  3. %将矩阵数据规范与一个范围之中,使不同维度具有可比性  
  4. clc;  
  5. clear;  
  6. X=[790 3977 849 1294 1927 1105 204 1329  
  7.     768 5037 1135 1330 1925 1459 275 1487  
  8.     942 2793 820 814 1617 942 155 976  
  9.     916 2798 901 932 1599 910 182 1135  
  10.     1006 2864 1052 1005 1618 839 196 1081];  
  11. Y=mapminmax(X,0,1);  
输出结果:
Y =
    0.1553    1.0000    0.1710    0.2889    0.4567    0.2388         0    0.2982
    0.1035    1.0000    0.1806    0.2215    0.3465    0.2486         0    0.2545
    0.2983    1.0000    0.2521    0.2498    0.5542    0.2983         0    0.3112
    0.2806    1.0000    0.2748    0.2867    0.5417    0.2783         0    0.3643
    0.3036    1.0000    0.3208    0.3032    0.5330    0.2410         0    0.3317

规范范围为(-1,1)
  1. %%矩阵数据归一化  
  2. %归一化作用是处理奇异样本矩阵  
  3. %将矩阵数据规范与一个范围之中,使不同维度具有可比性  
  4. clc;  
  5. clear;  
  6. X=[790 3977 849 1294 1927 1105 204 1329  
  7.     768 5037 1135 1330 1925 1459 275 1487  
  8.     942 2793 820 814 1617 942 155 976  
  9.     916 2798 901 932 1599 910 182 1135  
  10.     1006 2864 1052 1005 1618 839 196 1081];  
  11. Y=mapminmax(X);  


输出结果:
Y =
   -0.6894    1.0000   -0.6581   -0.4222   -0.0867   -0.5224   -1.0000   -0.4037
   -0.7929    1.0000   -0.6388   -0.5569   -0.3070   -0.5027   -1.0000   -0.4910
   -0.4033    1.0000   -0.4958   -0.5004    0.1084   -0.4033   -1.0000   -0.3776
   -0.4388    1.0000   -0.4503   -0.4266    0.0833   -0.4434   -1.0000   -0.2714
   -0.3928    1.0000   -0.3583   -0.3936    0.0660   -0.5180   -1.0000   -0.3366


3.数据矩阵标准化

标准化的数据均值为0,标准差为1
标准化函数zscore(x)
就是原数据减去均值,再除以标准差(无偏估计)

即Z=(x-mean(x))./std(x);
  1. %%矩阵数据标准化  
  2. clc;  
  3. clear;  
  4. X=[790 3977 849 1294 1927 1105 204 1329  
  5.     768 5037 1135 1330 1925 1459 275 1487  
  6.     942 2793 820 814 1617 942 155 976  
  7.     916 2798 901 932 1599 910 182 1135  
  8.     1006 2864 1052 1005 1618 839 196 1081];  
  9. Y=zscore(X);  
输出结果:
Y =
   -0.9261    0.4840   -0.7522    0.9640    1.1002    0.2177    0.0358    0.6225
   -1.1419    1.5457    1.3487    1.1224    1.0886    1.6449    1.6257    1.3944
    0.5651   -0.7020   -0.9653   -1.1488   -0.6967   -0.4395   -1.0614   -1.1023
    0.3100   -0.6969   -0.3702   -0.6294   -0.8011   -0.5685   -0.4568   -0.3254
    1.1929   -0.6308    0.7390   -0.3081   -0.6909   -0.8547   -0.1433   -0.5892

也可以按照上面的公式:
  1. %%矩阵数据标准化  
  2. clc;  
  3. clear;  
  4. X=[790 3977 849 1294 1927 1105 204 1329  
  5.     768 5037 1135 1330 1925 1459 275 1487  
  6.     942 2793 820 814 1617 942 155 976  
  7.     916 2798 901 932 1599 910 182 1135  
  8.     1006 2864 1052 1005 1618 839 196 1081];  
  9.   
  10. Y=(X-repmat(mean(X),5,1))./repmat(std(X),5,1);  
输出结果:
Y =
   -0.9261    0.4840   -0.7522    0.9640    1.1002    0.2177    0.0358    0.6225
   -1.1419    1.5457    1.3487    1.1224    1.0886    1.6449    1.6257    1.3944
    0.5651   -0.7020   -0.9653   -1.1488   -0.6967   -0.4395   -1.0614   -1.1023
    0.3100   -0.6969   -0.3702   -0.6294   -0.8011   -0.5685   -0.4568   -0.3254
    1.1929   -0.6308    0.7390   -0.3081   -0.6909   -0.8547   -0.1433   -0.5892
和以上结果一致。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据矩阵是指将原始数据矩阵形式,方便进行数据处理和分析。在MATLAB中,有多种方法可以进行数据矩阵。 引用中提到的RegEM方法是一种用于处理不完整数据集的方法,其中包括估计平均值和协方差矩阵,以及对缺失值的归因。 引用中提到的方法一是通过将矩阵中的每个元素除以其所在列向量的二范数来实现矩阵的列向量单位。 引用中提到的mapminmax函数可以将数据矩阵归一化到指定的范围内。该函数将每个维度的数据规范到指定的范围,使不同维度具有可比性。 因此,根据以上引用内容,可以得出MATLAB中进行数据矩阵的方法有:使用RegEM方法处理不完整数据集、使用方法一将矩阵的列向量单位、使用mapminmax函数进行归一化处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlab矩阵标准化代码-RegEM:正则期​​望最大算法(Matlab代码)](https://download.csdn.net/download/weixin_38669674/19021666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MATLAB数据矩阵单位归一化标准化](https://blog.csdn.net/qq_27245709/article/details/98589034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值