Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. function result = myArgUnwrap(inCmxAry)
  2. % usage: arrayTheta=myArgUnwrap(arrayX+j*arrayY);
  3. % calc arg without wrap at +-pi
  4.  
  5. [sr,sc]=size(inCmxAry);
  6. tmpAry = reshape(inCmxAry,sc*sr,1);
  7. Ndat = sc*sr;
  8. tmpAngle = arg(tmpAry);
  9. diff = tmpAngle(2:end) - tmpAngle(1:(end-1));
  10. wrapSign = (diff>(pi*1.5))*(-1) + (diff<(-pi*1.5))*(1);
  11.  
  12. [inxFndp, dmyFlagp, dmyValp] = find(wrapSign == 1);
  13. sumFlag = zeros(Ndat,1);
  14. for uilp= 1:length(inxFndp)
  15. sumFlag += [zeros(inxFndp(uilp)-0,1);ones((Ndat+1)-inxFndp(uilp)-1,1)];
  16. endfor
  17.  
  18.  
  19. [inxFndm, dmyFlagm, dmyValm] = find(wrapSign == -1);
  20. for uilp= 1:length(inxFndm)
  21. sumFlag += [zeros(inxFndm(uilp)-0,1);(-1)*ones((Ndat+1)-inxFndm(uilp)-1,1)];
  22. endfor
  23.  
  24. result = tmpAngle + 2*pi*sumFlag;
  25. result = reshape(result,sr,sc);
  26.  
  27.  
  28. %debug
  29. % plot(myArgUnwrap(exp(j*2*pi*[0:0.01:4])))
  30. % 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