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(:)
表示将所有数据存成一列