是否有更有效的方法从1个数组和同一个数组的每个元素中选择一个元素

时间:2013-11-14 21:22:28

标签: arrays matlab loops for-loop

我希望,对于数组ZAbs的每个元素,将它与数组本身的每个元素进行相等性比较,并将它们放入另一个不同的数组中。我希望distinct数组的元素与ZAbs数组具有相同的索引。

我是通过创建4个嵌套for循环来完成的:

for pAbs2 = 1:400

    for qAbs2 = 1:300

        zAbsCompare = ZAbs(qAbs2, pAbs2);

        for pAbs3 = 1:400

            for qAbs3 = 1:300

                zAbsCompare2 = ZAbs(qAbs3, pAbs3);

                if (zAbsCompare == zAbsCompare2)

                    InitialZModEqualsImag(pAbs2,qAbs2) = InitialZImag(qAbs2, pAbs2);
                    InitialZModEqualsReal(pAbs2,qAbs2) = InitialZReal(qAbs2, pAbs2);

                end

            end

        end

    end

end

然而,这运行得非常慢。我想不出更好的方法来做到这一点,但由于我对MATLAB缺乏经验,我可能会忽视这里的一些东西。有什么帮助吗?

编辑:修正了错误并重述了问题。

1 个答案:

答案 0 :(得分:1)

您可以使用bsxfun进行比较(不确定是您想要的):

comp = bsxfun(@eq, X, shiftdim(X,-2));

如果comp(m,n,p,q),结果1X(m,n) == X(p,q),否则为0