登录论坛

查看完整版本 : [MATLAB基础] 如何将下面的代码矢量化以加快运行速度


sulivandhi
2016-03-01, 22:56
我想要实现的功能是,对列向量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循环去掉,使用矩阵运算的方式达到我想要的结果