![]() |
如何将下面的代码矢量化以加快运行速度
我想要实现的功能是,对列向量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.