0001 function [fx,fz,qcor]=qemrdtresp_mod(mach,bpmidx,qcoridx)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 nbpm=length(bpmidx);
0024 nqcor=length(qcoridx);
0025
0026
0027
0028 [refpts,~,kl]=unique([qcoridx bpmidx length(mach)+1]);
0029 jcor=kl(1:nqcor);
0030 jbpm=kl(nqcor+(1:nbpm));
0031 jend=kl(end);
0032 [vdata,avebeta,avemu]=atavedata_mod(mach,0,refpts);
0033 mtx=vdata(jend).mu(1);
0034 mtz=vdata(jend).mu(2);
0035
0036
0037 if nargout >= 3
0038 qcor.beta=avebeta(jcor,:);
0039 qcor.phase=avemu(jcor,:);
0040 end
0041
0042
0043
0044 dphix=dphase(avemu(jbpm,1),avemu(jcor,1),mtx);
0045 dphiz=dphase(avemu(jbpm,2),avemu(jcor,2),mtz);
0046
0047 fx=-avebeta(jcor,ones(1,nbpm))'.*complex(cos(2*dphix),sin(2*dphix))./...
0048 (1-complex(cos(2*mtx),sin(2*mtx)))/8;
0049
0050 fz= avebeta(jcor,2*ones(1,nbpm))'.*complex(cos(2*dphiz),sin(2*dphiz))./...
0051 (1-complex(cos(2*mtz),sin(2*mtz)))/8;
0052
0053 function dph=dphase(phib,phik,mtune)
0054 nb=length(phib);
0055 nk=length(phik);
0056 dph=phik(:,ones(nb,1))'-phib(:,ones(1,nk));
0057 neg=(dph < 0);
0058 dph(neg)=dph(neg)+mtune;
0059 end
0060
0061 end