matlab利用mapminmax实现归一化到(0,1)和(-1,1)
若输入为1×b的列向量,比如b为2048
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%使用mapminmax来实现归一化到[0,1]
n=y_total'; %将读取的文件取转置,y_total为(2048*1),因为mapminmax是按行处理
p=[] ; %p初始化为空列表
%A=[p,n]; %看一下n的情况为1*2048 [z,ps] = mapminmax(n); %将n(只有一行)归一化到[-1,1]
ps.ymin = 0; %设置ps中的参数ymin=0,因为要归一化到[0,1]
[z,ps] = mapminmax(n,ps); %将n归一化到[0,1]
q=z'; %将行(1*2048)转置为列2048*1
p=[p,q]; %将循环每次所得的列缀在p列表面
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
若需要返回未归一化前的数据`
mapminmax('reverse',z,ps) %还原未归一化
若输入为m×n的矩阵
m=xlsread('a.xlse'); %读取需要按列归一化的xlse文件
n=m'; %N*M
x=[];
for i=1:raws %循环需要归一化的列,按文件实际列数来取。即转置后的行数 ,raws=N
[y,ps] = mapminmax(n(i,:)); %将n的第i行归一化到[-1,1]
ps.ymin = 0;
[y,ps] = mapminmax(n(i,:),ps);%将n的第i行归一化到[0,1]
z=y'; %M*N
x=[x,z];
end