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

原博客http://blog.csdn.net/yb536/article/details/41050181点击打开链接

1.数据矩阵单位化

方法一:
[plain]  view plain  copy
  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

方法二:
[plain]  view plain  copy
  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)
若想将规范范围划为(0,1),可编写Y=mapminmax(A,0,1);
此函数规整行向量中最大最小值,如果运用此函数,则A矩阵每一行为一个维度,每一列是一个样本。
[plain]  view plain  copy
  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)
[plain]  view plain  copy
  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);
[plain]  view plain  copy
  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

也可以按照上面的公式:
[plain]  view plain  copy
  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
和以上结果一致。


  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
matlab 相机标定代码 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。 [1]基本的坐标系: 世界坐标系; 相机坐标系; 成像平面坐标系; 像素坐标系 [2]一般来说,标定的过程分为两个部分: 第一步是从世界坐标系转为相机坐标系,这一步是三维点到三维点的转换,包括R,t(相机外参,确定了相机在某个三维空间中的位置和朝向)等参数; 第二部是从相机坐标系转为成像平面坐标系(像素坐标系),这一步是三维点到二维点的转换,包括K(相机内参,是对相机物理特性的近似)等参数; 投影矩阵 : P=K [ R | t ] 是一个3×4矩阵,混合了内参和外参而成。 P=K[Rt] 二.基本知识介绍及 1、摄像机模型 Pinhole Camera模型如下图所示: 摄像机模型与标定 - 小企鹅 - 企鹅的博客 是一个小孔成像的模型,其中: [1]O点表示camera centre,即相机的中心点,也是相机坐标系的中心点; [2]z轴表示principal axis,即相机的主轴; [3]q点所在的平面表示image plane,即相机的像平面,也就是图片坐标系所在的二维平面; [4]O1点表示principal point,即主点,主轴与像平面相交的点; [5]O点到O1点的距离,也就是右边图中的f,即相机的焦距; [6]像平面上的x和y坐标轴是与相机坐标系上的X和Y坐标轴互相平行的; [7]相机坐标系是以X,Y,Z(大写)三个轴组成的且原点在O点,度量值为米(m); [8]像平面坐标系是以x,y(小写)两个轴组成的且原点在O1点,度量值为米(m); [9]像素坐标系一般指图片相对坐标系,在这里可以认为和像平面坐标系在一个平面上,不过原点是在图片的角上,而且度量值为像素的个数(pixel); 2、相机坐标系→成像平面坐标系 [1]以O点为原点建立摄像机坐标系。点Q(X,Y,Z)为摄像机坐标系空间中的一点,该点被光线投影到图像平面上的q(x,y,f)点。 图像平面与光轴z轴垂直,和投影中心距离为f (f是相机的焦距)。按照三角比例关系可以得出: x/f = X/Z y/f = Y/Z ,即 x = fX/Z y = fY/Z 以图像平面的左上角或左下角为原点建立坐标系。假设像平面坐标系原点位于图像左下角,水平向右为u轴,垂直向上为v轴,均以像素为单位。 以图像平面与光轴的交点O1 为原点建立坐标系,水平向右为x轴,垂直向上为y轴。原点O1一般位于图像中心处,O1在以像素为单位的图像坐标系中的坐标为(u0, v0)。 像平面坐标系和像素坐标系虽然在同一个平面上,但是原点并不是同一个。 摄像机模型与标定 - 小企鹅 - 企鹅的博客 设每个像素的物理尺寸大小为 dx * dy (mm) ( 由于单个像素点投影在图像平面上是矩形而不是正方形,因此可能dx != dy), 图像平面上某点在成像平面坐标系中的坐标为(x, y),在像素坐标系中的坐标为(u, v),则二者满足如下关系:[即(x, y)→(u, v)] u = x / dx + u0 v = y / dy + v0 用齐次坐标与矩阵形式表示为: 摄像机模型与标定 - 小企鹅 - 企鹅的博客 将等式两边都乘以点Q(X,Y,Z)坐标中的Z可得: 摄像机模型与标定 - 小企鹅 - 企鹅的博客 将摄像机坐标系中的(1)式代入上式可得: 则右边第一个矩阵和第二个矩阵的乘积亦为摄像机的内参数矩阵单位为像素),相乘后可得: (2) 和(1)式相比,此内参数矩阵中f/dx, f/dy, cx/dx+u0, cy/dy+v0 的单位均为像素。令内参数矩阵为K,则上式可写成: 摄像机模型与标定 - 小企鹅 - 企鹅的博客 (3) 三.相机内参K(与棋盘所在空间的3D几何相关) 在计算机视觉中,摄像机内参数矩阵 其中 f 为摄像机的焦距,单位一般是mm;dx,dy 为像元尺寸;u0,v0 为图像中心。 fx = f/dx, fy = f/dy,分别称为x轴和y轴上的归一化焦距. 为更好的理解,举个实例: 现以NiKon D700相机为例进行求解其内参数矩阵: 就算大家身边没有这款相机也无所谓,可以在网上百度一下,很方便的就知道其一些参数—— 焦距 f = 35mm 最高分辨率:4256×2832 传感器尺寸:36.0×23.9 mm 根据以上定义可以有: u0= 4256/2 = 2128 v0= 2832/2 = 1416 dx = 36.0/4256 dy = 23.9/2832 fx = f/dx = 4137.8 fy = f/dy = 4147.3 分辨率可以从显示分辨率与图像分辨率两个方向来分类。 [1]显示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少。由于屏幕上的点、线和面都是由像素组成的, 显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。 可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。 显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。 [2]图像分辨率则是单位英寸中所包含的像素点数,其定义更趋近于分辨率本身的定义。 四.畸变参数(与点集如何畸变的2D几何相关。) 采用理想针孔模型,由于通过针孔的光线少,摄像机曝光太慢,在实际使用中均采用透镜,可以使图像生成迅速,但代价是引入了畸变。 有两种畸变对投影图像影响较大: 径向畸变和切向畸变。 1、径向畸变 对某些透镜,光线在远离透镜中心的地方比靠近中心的地方更加弯曲,产生“筒形”或“鱼眼”现象,称为径向畸变。 一般来讲,成像仪中心的径向畸变为0,越向边缘移动,畸变越严重。不过径向畸变可以通过下面的泰勒级数展开式来校正: xcorrected = x(1+k1r2+k2r4+k3r6) ycorrected = y(1+k1r2+k2r4+k3r6) 这里(x, y)是畸变点在成像仪上的原始位置,r为该点距离成像仪中心的距离,(xcorrected ,ycorrected )是校正后的新位置。 对于一般的摄像机校正,通常使用泰勒级数中的前两项k1和k2就够了;对畸变很大的摄像机,比如鱼眼透镜,可以使用第三径向畸变项k3 2、切向畸变 当成像仪被粘贴在摄像机的时候,会存在一定的误差,使得图像平面和透镜不完全平行,从而产生切向畸变。也就是说,如果一个矩形被投影到成像仪上时, 可能会变成一个梯形。切向畸变可以通过如下公式来校正: xcorrected = x + [ 2p1y + p2 (r2 + 2x2) ] ycorrected = y + [ 2p2x + p1 (r2 + 2y2) ] 这里(x, y)是畸变点在成像仪上的原始位置,r为该点距离成像仪中心的距离,(xcorrected ,ycorrected )是校正后的新位置。 五.摄像机的外参数 旋转向量(大小为1×3的矢量或旋转矩阵3×3)和平移向量(tx,ty,tz)。 旋转向量:旋转向量是旋转矩阵紧凑的变现形式,旋转向量为1×3的行矢量。 r就是旋转向量,旋转向量的方向是旋转轴 ,旋转向量的模为围绕旋转轴旋转的角度。 通过上面的公式,我们就可以求解出旋转矩阵R。同样的已知旋转矩阵,我们也可以通过下面的公式求解得到旋转向量: 。
数据矩阵是指将原始数据矩阵形式,方便进行数据处理和分析。在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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值