【发布时间】:2015-11-02 13:46:50
【问题描述】:
我有一个巨大的矩阵MxN 矩阵,比如A=rand([M,N]); 和一个索引向量,其N 整数值介于1 和M 之间,比如RandomIndex = randi(M,[1,N]);。
现在我想生成一个带有条目的行向量
result = [A(RandomIndex(1),1), A(RandomIndex(2),2), ..., A(RandomIndex(N),N)]
什么是执行此操作的有效方法?这应该是一个非常便宜的操作,但我所有的实现都很慢。我不认为 Matlab 中有一个符号可以直接执行此操作,是吗?
目前最快的选择是
indexFunction = @(r,c) A(r,c);
result = cell2mat(arrayfun(indexFunction,RandomIndex,1:N,'UniformOutput',false));
有没有更有效的方法?
【问题讨论】: