在matlab中检索向量中元素数量的最佳方法

Best way to retrieve the number of elements in a vector in matlab

我想知道在 matlab 中以速度检索向量中元素数量的最佳方法是什么:

是吗:

  1. length(A)

  1. size(A,1)

都没有。为此,您希望 始终 使用 numellength 只有 return 是最长的维度(对于二维数组可能会造成混淆)并且 size(data, dimension) 需要您知道它是行向量还是列向量。 numel 将 return 元素个数无论是行向量、列向量还是多维数组。

我们可以通过编写快速基准测试轻松测试它们的性能。我们将使用各种方法计算大小 N 次(为此我使用了 10000 次)。

function size_test

    nRepeats = 10000;

    times1 = zeros(nRepeats, 1);
    times2 = zeros(nRepeats, 1);
    times3 = zeros(nRepeats, 1);

    for k = 1:nRepeats
        data = rand(10000, 1);
        tic
        size(data, 1);
        times1(k) = toc;
        tic
        length(data);
        times2(k) = toc;
        tic
        numel(data);
        times3(k) = toc;
    end

    % Compute the total time required for each method
    fprintf('size:\t%0.8f\n', sum(times1));
    fprintf('length:\t%0.8f\n', sum(times2));
    fprintf('numel:\t%0.8f\n', sum(times3));
end

当 运行 在我的机器上时,它产生:

size:   0.00860400
length: 0.00626700
numel:  0.00617300

因此,除了最稳健之外,numel 也比其他替代方案稍快。

话虽这么说,除了确定数组中的元素数量之外,您的代码中可能还有许多其他瓶颈,因此我将专注于优化这些瓶颈。