在MATLAB中获取给定矩阵索引的元素的最快方法

em7*_*m70 3 performance matlab vectorization

我有一个N乘2矩阵A我希望从2D矩阵B得到的元素索引,A的每一行都是我想得到的B元素的行和列索引.我想将所有这些元素叠加为N×1向量.

B是方阵,所以我目前正在使用

N = size(B,1);
indices = arrayfun(@(i) A(i,1) + N*(A(i,2)-1), 1:size(A,1));
result = B(indices);
Run Code Online (Sandbox Code Playgroud)

但是,虽然它有效,但这可能是一个巨大的瓶颈,我需要加快代码,以使其有用.

我能以最快的方式获得相同的结果?

Sha*_*hai 6

怎么样

indices = [1 N] * (A'-1) + 1;
Run Code Online (Sandbox Code Playgroud)