matlab代码嵌套循环性能提升

matlab code nested loop performance improvement

我很想收到有关如何提高以下嵌套 for 循环性能的建议:

I = (U > q); % matrix of indicator variables, I(i,j) is 1 if U(i,j) > q

for i = 2:K

    for j = 1:(i-1)

        mTau(i,j) = sum(I(:,i) .* I(:,j));

        mTau(j,i) = mTau(i,j);

    end

end

代码评估变量对是否两个变量都低于特定阈值,从而填充矩阵。感谢您的帮助!

一种方法 bsxfun -

out = squeeze(sum(bsxfun(@and,I,permute(I,[1 3 2])),1));
out(1:size(out,1)+1:end)=0;

可以使用矩阵乘法:

I = double(U>q);
mTau = I.'*I;

这将在对角线上具有 none- 零值,因此您可以通过

将它们设置为零
mTau = mTau - diag(diag(mTau));