Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2016-03-01, 22:56   #1
sulivandhi
初级会员
 
注册日期: 2010-05-29
帖子: 2
声望力: 0
sulivandhi 正向着好的方向发展
默认 如何将下面的代码矢量化以加快运行速度

我想要实现的功能是,对列向量A中的每一个元素a,在n*2的矩阵B中,找出所有第1列的值等于a的行,然后求这些行的第2列的最大值 (若B中没有满足条件的行,则为0),生成一个和A一样大小的列向量C
举例而言,A=[1 2 3]',B=[1 2;3 4;1 3]
那么对A中的1,B中满足条件的是第1行和第3行,则第2列最大值max(2,3)=3;对A中2,B中没有满足条件的行,第2列最大值为0;对A中的3,B中满足条件的是第2行,第2列值最大值为4。于是结果是C=[3,0,4]'
我目前使用的是下面的代码:
C=zeros(size(A,1),1);
for i=1:size(A,1)
if(~isempty(B(B(:,1)==A(i),2)))
C(i)=max(B(B(:,1)==A(i),2));
end
end
有没有什么办法将这个影响执行效率的for循环去掉,使用矩阵运算的方式达到我想要的结果
sulivandhi 当前离线   回复时引用此帖
 


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

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



所有时间均为北京时间。现在的时间是 06:41


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