我有一个功能如下:
我优化的matlab代码是:
function gamma = calcGamma(H, d, delta, f)
s= size(H);
Nv = s(1);
Ne = s(2);
gamma = zeros(Ne,1);
for e =1:Ne
hue = H(:,e);
sdu=f./sqrt(d);
mHUE = repmat(hue',Nv,1);
mHVE = repmat(hue,1,Nv);
mSDU = repmat(sdu',Nv,1);
mSd = repmat(sdu,1,Nv);
ss1 = mHUE .* mHVE/delta(e) .* (mSDU-mSd).^2;
gamma(e) = sum(ss1(:));
end
但是,由于 Ne 很大,因此计算该函数需要相当长的时间。
我看到一个类似的问题有一个很好的解决方案,但我不明白它是如何得出的。
任何避免for循环的解决方案?谢谢