The code of exchange() function contains folow fragments responsible for linewidths:
Code: Select all
...
if ~isempty(Sys.lw) && isempty(Sys.lwpp), Sys.lwpp = Sys.lw/sqrt(3); end
...
lwpp = mt2mhz(Sys.lwpp,mean(Sys.g)); % field to frequency conversion
Gamma = lwpp*pi*sqrt(3); % peak-to-peak lw -> Gamma (= 1/T2) conversion
...
M0 = -Gamma*eye(nSites) + X;
...
for iLine = 1:nLines
[U,Lambda] = eig(M0 - diag(1i*nu(iLine,:)));
Lvalues(:,iLine) = diag(Lambda);
Svalues(:,iLine) = (Det*U).'.*(U\Pop);
end
Code: Select all
if numel(Gamma)==1
M0 = -Gamma*eye(nSites) + X;
else
M0 = diag(-Gamma) + X;
end
Code: Select all
[U,Lambda] = eig(M0 - diag(lb(iLine)) - diag(1i*nu(iLine,:)));
It is a problem to define the reasonable lb values. I suggest that fhe function fastmotion() may be used (for each site, of course):
Code: Select all
lb=fastmotion(Sys,mean(Exp.Range),tcorr);
lb=lb-min(lb);
lb=mt2mhz(lb,mean(Sys.g))*pi;