def retrievePhase(self): y1, A1 = self.initiateMatrix1() results1 = np.linalg.lstsq(A1, y1) ajsodd = results1[0] A1tA1inv = np.linalg.inv(np.matmul(np.transpose(A1), A1)) n_p = y1.size - 1 ste1 = np.sqrt(results1[1] / n_p * np.diagonal(A1tA1inv)) deltaphi = fs.deltaPhi(self.N, self.deltaZ, self.F, 2 * self.pupilRadius, self.lbda, self.dxp) y2, A2 = self.initiateMatrix2(deltaphi) results2 = np.linalg.lstsq(A2, y2) ajseven = results2[0] A2tA2inv = np.linalg.inv(np.matmul(np.transpose(A2), A2)) n_p = y2.size - 1 ste2 = np.sqrt(results2[1] / n_p * np.diagonal(A2tA2inv)) js = np.append(self.oddjs, self.evenjs) ajs = np.append(ajsodd, ajseven) ajsSte = np.append(ste1, ste2) Ixjs = np.argsort(js) result = { 'js': js[Ixjs], 'ajs': ajs[Ixjs], 'ajsSte': ajsSte[Ixjs] } #,'wavefront':phase} return result
def retrievePhase(self): y1,A1 = self.initiateMatrix1() results1 = np.linalg.lstsq(A1,y1) ajsodd = results1[0] deltaphi = fs.deltaPhi(self.N,self.deltaZ,self.F,2*self.pupilRadius,self.lbda,self.dxp) y2,A2 = self.initiateMatrix2(ajsodd,deltaphi) results2 = np.linalg.lstsq(A2,y2) ajseven = results2[0] js = np.append(self.oddjs,self.evenjs) ajs = np.append(ajsodd,ajseven) Ixjs = np.argsort(js) result = {'js': js[Ixjs], 'ajs': ajs[Ixjs]} #,'wavefront':phase} return result
def retrievePhase(self): y1,A1 = self.initiateMatrix1() results1 = np.linalg.lstsq(A1,y1) ajsodd = results1[0] deltaphi = fs.deltaPhi(self.N,self.deltaZ,self.F,2*self.pupilRadius,self.lbda,self.dxp) if all(np.abs(ajsodd*1e9*self.lbda/2/np.pi) < 5e-2): #if all ajsodd are smaller than 1e-3nm then the phase is purely even. print 'phase purely even' y2,A2 = self.initiateMatrix2_2defIm(deltaphi) else: print 'mixed phase' y2,A2 = self.initiateMatrix2(ajsodd,deltaphi) results2 = np.linalg.lstsq(A2,y2) ajseven = results2[0] js = np.append(self.oddjs,self.evenjs) ajs = np.append(ajsodd,ajseven) Ixjs = np.argsort(js) result = {'js': js[Ixjs], 'ajs': ajs[Ixjs]} #,'wavefront':phase} return result
import numpy as np import fs import matplotlib.pyplot as plt import phasor as ph import PSF as psf pupilRadius = 1.6e-3 lbda = 0.6375e-6 F = 80e-3 pxsize = 5.3e-6 N = 400 dxp = lbda * F / (N * pxsize) deltaZ = 3.19e-3 jmax = 15 deltaphi = fs.deltaPhi(N, deltaZ, F, 2 * pupilRadius, lbda, dxp) j = 4 jspresent = np.array([7]) ajspresent = np.array([10e-9 / lbda * 2 * np.pi]) js = np.linspace(1, jmax, num=jmax) ajs = js * 0. for ij, j in enumerate(jspresent): ajs[js == jspresent[ij]] = ajspresent[ij] P2Vdephasing = np.pi * deltaZ / lbda * (2 * pupilRadius / F)**2 / 4. a4dephasing = P2Vdephasing / 2 / np.sqrt(3)