我正在寻找适当的矢量化matlab函数以消除多线程for循环和增益速度。matlab for-loop矢量化
size(A)
= N
-by- N
,其中30 <= N <= 60
1e4 <= numIter <= 1e6
function val=permApproxStochSquare(A,numIter)
%// A ... input square non-negative matrix
%// numIter ... number of interations
N=size(A,1);
alpha=zeros(numIter,1);
for curIter=1:numIter
U=randn(N,N);
B=U.*sqrt(A);
alpha(curIter)=det(B)^2;
end
val=mean(alpha);
end
对于大N,使用'parfor'可能是一种选择。 – Daniel
@Daniel是的parfor是简单而好的解决方案,但我需要的解决方案没有Parallel Computing Toolbox(parfor) – michal
除了parfor外,我只想到在循环外部预先计算'sqrt(A)'。 'parfor'可以在没有Parallel Computing Toolbox的情况下使用,但您没有任何灵活性。 – Bentoy13