【发布时间】:2015-04-13 19:38:33
【问题描述】:
我有一个代码,在运行过程中重复了几次。此代码两两比较C 的行。运行需要很长时间,特别是对于大型C。我正在寻找一种快速的方法来运行它。我使用了a(ismember(a,b))) 而不是intersect(a,b)。
I = size (C,1);
for i = 1 : I-1,
for j = i+1 : I,
a=C(i,:);
b=C(j,:);
if sum(a(ismember(a,b)))-sum(b)==0,
n = n+1;
K(n) = j;
K1(n) = i;
end
end
end
【问题讨论】:
-
C的典型数据大小是多少? -
感谢您的提示。
C的行数通常最多可达 1500 行。它的列更少(最多 5 个)。 -
你想用这个做什么?
-
@knedlsepp:我想找到多余的行。冗余行是那些具有其他行和零元素的子集的行。例如如果
C=[17 18 5;3 5 7;17 18 0;4 17 2;5 0 0],那么C(3,:)和C(5,:)是多余的。因此n=2、K=[3 5 5]和K1n=[1 1 2] -
@Meher81:您的原始代码与您在评论中描述的不完全一致。这仅在
C的条目不是负数时有效。
标签: performance matlab matrix vectorization