How to vectorize this code? element wise to save time

% size(matAL) > 32,500,5
matCT=zeros(500,32,32); %Pre-allocate
x=0;
for t=1:500
x=1+x;
for i=1:32
for j=1:32
xsd = squeeze(matAL(i,t,:) .* conj(matAL(j,t,:)));
matCT(x,j,i) = abs(mean(exp(1i*angle(xsd))));
end
end
end

回答(1 个)

Hi,
As all the three for loops have some dependencies it is difficult to vectorize the code.
you can try the following code, it is partially vectorized.
for i = 1:32
for j = 1:32
xsd = squeeze(matAL(i,1:500,:) .* conj(matAL(j,1:500,:)));
matCT(1:500,j,i) = abs(mean(exp(1i*angle(xsd(1:500,:)))'));
end
end

此问题已关闭。

产品

版本

R2018b

标签

提问:

2020-4-19

关闭:

2021-8-20

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by