gpt4 book ai didi

matlab - 还有一个比ismember更快的类似逻辑是什么?

转载 作者:行者123 更新时间:2023-12-02 07:40:00 27 4
gpt4 key购买 nike

继续我的研究,

我需要另一个与 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

我使用配置文件查看器检查了该代码。我在这部分得到了让我的代码执行缓慢的原因。

任何人都对这个逻辑有经验,请分享。谢谢

最佳答案

MATLAB 有几个 undocumented built-in functions这可以帮助您获得与其他函数相同的结果,而且速度更快。

在您的情况下,您可以使用 ismembc :

done = all(ismembc(StartPost(h, 1:4), sort(StartPost(h-1, 1:4)))));

请注意,ismembc(A, B) 要求对矩阵 B 进行排序并且不包含任何 NaN 值。

这是您的示例的执行时间差:

tic
for h = 2:2:8
done = all(ismember(StartPost(h, 1:4), StartPost(h-1, 1:4)));
end
toc

Elapsed time is 0.029888 seconds.


tic
for h = 2:2:8
done = all(ismembc(StartPost(h, 1:4), sort(StartPost(h-1, 1:4))));
end
toc

Elapsed time is 0.006820 seconds.

这大约快了 50 倍。

关于matlab - 还有一个比ismember更快的类似逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com