Skip to content

Commit

Permalink
Made minor modification to 'op_alignAverages.m' to prevent failure wh…
Browse files Browse the repository at this point in the history
…en number of averages is only 1
  • Loading branch information
jamienear committed Jan 6, 2016
1 parent d9f8db8 commit b577b9a
Showing 1 changed file with 56 additions and 45 deletions.
101 changes: 56 additions & 45 deletions processingTools/op_alignAverages.m
Original file line number Diff line number Diff line change
Expand Up @@ -23,60 +23,71 @@
error('ERROR: I think it only makes sense to do this after you have combined the channels using op_addrcvrs. ABORTING!!');
end

if nargin<4
parsFit=[0,0];
else
parsFit=initPars;
end
if in.dims.averages==0
%DO NOTHING
disp('WARNING: No averages found. Returning input without modification!');
out=in;
fs=0;
phs=0;

if in.dims.subSpecs==0
B=1;
else
B=in.sz(in.dims.subSpecs);
end

fs=zeros(in.sz(in.dims.averages),B);
phs=zeros(in.sz(in.dims.averages),B);
fids=zeros(in.sz(in.dims.t),1,B);
for m=1:B
if avg=='y' || avg=='Y'
disp('aligning all averages to the Average of the averages');
base=op_averaging(in);
base=[real(base.fids( in.t>=0 & in.t<tmax ,m));imag(base.fids( in.t>=0 & in.t<tmax ,m))];
begin=1;
if nargin<4
parsFit=[0,0];
else
parsFit=initPars;
end

if in.dims.subSpecs==0
B=1;
else
disp('aligning all averages to the first average');
base=[real(in.fids(in.t>=0 & in.t<tmax,1,m));imag(in.fids(in.t>=0 & in.t<tmax,1,m))];
begin=2;
fids(:,1,m)=in.fids(:,1,m);
B=in.sz(in.dims.subSpecs);
end
for n=begin:in.sz(in.dims.averages)
parsGuess=parsFit;
%disp(['fitting subspec number ' num2str(m) ' and average number ' num2str(n)]);
parsFit=nlinfit(in.fids(in.t>=0 & in.t<tmax,n,m),base,@op_freqPhaseShiftComplexNest,parsGuess);
fids(:,n,m)=op_freqPhaseShiftNest(parsFit,in.fids(:,n,m));
fs(n,m)=parsFit(1);
phs(n,m)=parsFit(2);
%plot(in.ppm,fftshift(ifft(fids(:,1,m))),in.ppm,fftshift(ifft(fids(:,n,m))));

fs=zeros(in.sz(in.dims.averages),B);
phs=zeros(in.sz(in.dims.averages),B);
fids=zeros(in.sz(in.dims.t),1,B);
for m=1:B
if avg=='y' || avg=='Y'
disp('aligning all averages to the Average of the averages');
base=op_averaging(in);
base=[real(base.fids( in.t>=0 & in.t<tmax ,m));imag(base.fids( in.t>=0 & in.t<tmax ,m))];
begin=1;
else
disp('aligning all averages to the first average');
base=[real(in.fids(in.t>=0 & in.t<tmax,1,m));imag(in.fids(in.t>=0 & in.t<tmax,1,m))];
begin=2;
fids(:,1,m)=in.fids(:,1,m);
end
for n=begin:in.sz(in.dims.averages)
parsGuess=parsFit;
%disp(['fitting subspec number ' num2str(m) ' and average number ' num2str(n)]);
parsFit=nlinfit(in.fids(in.t>=0 & in.t<tmax,n,m),base,@op_freqPhaseShiftComplexNest,parsGuess);
fids(:,n,m)=op_freqPhaseShiftNest(parsFit,in.fids(:,n,m));
fs(n,m)=parsFit(1);
phs(n,m)=parsFit(2);
%plot(in.ppm,fftshift(ifft(fids(:,1,m))),in.ppm,fftshift(ifft(fids(:,n,m))));
end
end


%re-calculate Specs using fft
specs=fftshift(ifft(fids,[],in.dims.t),in.dims.t);


%FILLING IN DATA STRUCTURE
out=in;
out.fids=fids;
out.specs=specs;

%FILLING IN THE FLAGS
out.flags=in.flags;
out.flags.writtentostruct=1;
out.flags.freqcorrected=1;

end


%re-calculate Specs using fft
specs=fftshift(ifft(fids,[],in.dims.t),in.dims.t);


%FILLING IN DATA STRUCTURE
out=in;
out.fids=fids;
out.specs=specs;

%FILLING IN THE FLAGS
out.flags=in.flags;
out.flags.writtentostruct=1;
out.flags.freqcorrected=1;


function y=op_freqPhaseShiftComplexNest(pars,input)
f=pars(1); %Frequency Shift [Hz]
p=pars(2); %Phase Shift [deg]
Expand Down

0 comments on commit b577b9a

Please sign in to comment.