MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 如何将下面的代码矢量化以加快运行速度 (https://www.labfans.com/bbs/showthread.php?t=20890)

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循环去掉,使用矩阵运算的方式达到我想要的结果


所有时间均为北京时间。现在的时间是 11:27

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