我想在Matlab中将矩阵的每一列进行归一化处理。我尝试了两种实现方法:
选项A:
mx=max(x);
mn=min(x);
mmd=mx-mn;
for i=1:size(x,1)
xn(i,:)=((x(i,:)-mn+(mmd==0))./(mmd+(mmd==0)*2))*2-1;
end
Option B:mn=mean(x);
sdx=std(x);
for i=1:size(x,1)
xn(i,:)=(x(i,:)-mn)./(sdx+(sdx==0));
end
然而,对于我的数据来说,这些选项需要太多时间,例如在一个5000x53的矩阵上需要3-4秒钟。因此,是否有更好的解决方案?
sd(sd==0) = 1;
而不是sd(sd==0) = eps;
? - tashuhkasd
зҡ„еҖјгҖӮеҰӮжһңжҲ‘йҷӨд»Ҙ1пјҢз»“жһңдёҚдјҡж”№еҸҳпјӣеҰӮжһңжҲ‘йҷӨд»Ҙeps
пјҢз»“жһңдјҡд№ҳд»ҘдёҖдёӘеӨ§ж•°гҖӮ - Jonas0/eps
总是返回零,因此除法没有问题。但是,如果我想保留s d
矩阵进行进一步分析,则eps
值比零更好地表示了实际变异性。 - tashuhka