18 lines
632 B
Matlab
18 lines
632 B
Matlab
function [PhaseC] = calculatePhaseCoherence(psi,Transf,Params)
|
|
|
|
norm = sum(sum(sum(abs(psi).^2,1),2),3)*Transf.dx*Transf.dy*Transf.dz;
|
|
psi = psi/sqrt(norm);
|
|
|
|
NumGlobalShifts = 800;
|
|
betas = []; phishift = [];
|
|
for jj = 1:NumGlobalShifts
|
|
phishift(jj) = -pi + 2*pi*(jj-1)/NumGlobalShifts;
|
|
betas(jj) = sum(sum(sum(abs(angle(psi*exp(-1i*phishift(jj)))).*abs(psi).^2)));
|
|
end
|
|
[minbeta,minidx] = min(betas);
|
|
|
|
psi = psi*exp(-1i*phishift(minidx));
|
|
phi = angle(psi);
|
|
|
|
avgphi = sum(sum(sum(phi.*abs(psi).^2,1),2),3)*Transf.dx*Transf.dy*Transf.dz;
|
|
PhaseC = sum(sum(sum(abs(angle(psi)-avgphi).*abs(psi).^2)))*Transf.dx*Transf.dy*Transf.dz; |