【发布时间】:2012-08-31 16:32:56
【问题描述】:
继续我的研究,
我需要另一个与ismember 类似的逻辑,它的执行时间更快。
我的这部分代码和矩阵。
StartPost =
14 50 30 1 72 44 76 68 63 80 25 41;
14 50 30 1 61 72 42 46 67 77 81 27;
35 23 8 54 19 70 48 75 66 79 2 84;
35 23 8 54 82 72 78 68 19 2 48 66;
69 24 36 52 63 47 5 18 11 82 1 15;
69 24 36 52 48 18 1 12 80 63 6 84;
73 38 50 7 1 33 24 68 29 20 62 84;
73 38 50 7 26 61 65 32 22 18 2 69]
for h=2:2:8,
...
done=all(ismember(StartPost(h,1:4),StartPost(h-1,1:4)));
...
end
我使用 Profile viewer 检查了该代码。我在这部分得到了这一点,这使得我的代码执行缓慢。
谁有这个逻辑的经验,请分享。谢谢
【问题讨论】:
-
您在寻找
isequal吗? mathworks.com/help/techdoc/ref/isequal.html> 我不确定它是否更快(尽管它可能是),但它肯定更具可读性。 -
@beaker
isequal不会在这里删减它,因为ismember也会为具有不同顺序的相同元素的两行返回 true,而isequal不会。 -
@EitanT - 很好,谢谢。
-
我不知道它是否更快,但原则上
isempty(intersect(StartPost(h,1:4),StartPost(h-1,1:4)))应该产生相同的结果。