Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中标准化矩阵的快速技术

我想在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 选项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秒。因此,有没有更好的解决方案?



回答:

记住,在MATLAB中,矢量化=速度。

如果A是M x N矩阵,

A = rand(m,n); minA = repmat(min(A), [size(A, 1), 1]); normA = max(A) - min(A); % this is a vector normA = repmat(normA, [length(normA) 1]); % this makes it a matrix % of the same size as A normalizedA = (A - minA)./normA; % your normalized matrix

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.