# MATLAB数据处理

MATLAB数据处理

目录

mean(A,(b)) %均值函数,b为设置对哪一维上的数据进行处理,默认为第一维(列),行为第二维
mean(A,2) %对每一行数据求均值

p = randperm(n,k) %产生1,n的排列中的k个,k可以省略默认返回全部

数据归一化处理

  • 输入数据的单位不一样,且有些数据的范围可能特别大,无法直接比较,归一化就是将数据映射到[0,1]或[-1,1]或其他区间内

  • 此外在神经网络中激活函数的值域是有限制的,像S型函数值域在(0,1),所以训练数据的输出就要归一化到(0,1)之间

  • 归一化算法:\(y=(x-min)/(max-min) => [0,1]\)和\(y=2*(x-min)/(max-min) -1=> [-1,1]\)

  • 实现

    % 对于矩阵来说,没一行为一个样本,意思是将矩阵的每一行处理成[a,b]区间
    x=[2,3,4,5,6;7,8,9,10,11];
    y=[2,3;4,5];
    %xx为归一化后的矩阵,ps是训练样本数据的映射,包含了样本的所有信息
    %0,1是期望的归一化后数据的上下界
    [xx,ps]=mapminmax(x,0,1);
    %将y矩阵归一化到到原样本下(也就是样本的最大最小数据使用原样本的值)
    yy=mapminmax(\'apply\',y,ps);
    %将归一化后的矩阵反转到原始数据
    mapminmax(\'reverse\',yy,ps)
    

冒号的作用(获取指定行列的数据)

a =

     1     2     3     4     5

     4     5     6     7     8

     0     1     4     7     8

     0     2     5     8     7
  • b = a(行,列) :b = a(1:2:4,2:2:4)逗号前面的为行限定,后面的为列限定,改命令为获取a矩阵的从第1行开始,每两行取一行数据,一直到第4行,后面参数表示每一行中从第2列开始,每两列取一列数据,一直到第4列。
  • [起始值:步长:终点值]其中中间的增量参数可以省略[起始值:终点值],默认增量为1,方括号可以省略,起始值默认为1,终点值默认为结尾,省略表示取全部[(start):(end)]
  • b=a([1 2],[3 2])取第1 2行的第3 2列数据
  • 省略列参数b = a(1:2:4)默认第1对列操作,取1,3行的第一列的数据,并转换为行向量
  • b=b(:)表示将所有数据存成一列