Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function result = myArgUnwrap(inCmxAry)
- % usage: arrayTheta=myArgUnwrap(arrayX+j*arrayY);
- % calc arg without wrap at +-pi
- [sr,sc]=size(inCmxAry);
- tmpAry = reshape(inCmxAry,sc*sr,1);
- Ndat = sc*sr;
- tmpAngle = arg(tmpAry);
- diff = tmpAngle(2:end) - tmpAngle(1:(end-1));
- wrapSign = (diff>(pi*1.5))*(-1) + (diff<(-pi*1.5))*(1);
- [inxFndp, dmyFlagp, dmyValp] = find(wrapSign == 1);
- sumFlag = zeros(Ndat,1);
- for uilp= 1:length(inxFndp)
- sumFlag += [zeros(inxFndp(uilp)-0,1);ones((Ndat+1)-inxFndp(uilp)-1,1)];
- endfor
- [inxFndm, dmyFlagm, dmyValm] = find(wrapSign == -1);
- for uilp= 1:length(inxFndm)
- sumFlag += [zeros(inxFndm(uilp)-0,1);(-1)*ones((Ndat+1)-inxFndm(uilp)-1,1)];
- endfor
- result = tmpAngle + 2*pi*sumFlag;
- result = reshape(result,sr,sc);
- %debug
- % plot(myArgUnwrap(exp(j*2*pi*[0:0.01:4])))
- % plot(myArgUnwrap( [exp(j*2*pi*[0:0.01:2]),exp(j*2*pi*[2:-0.1:0]),exp(j*2*pi*[0:0.1:2])] ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement