首页 > 解决方案 > python程序未完成执行

问题描述

谁能帮助解释为什么这个程序没有完成执行。它以阵列大小打印并冻结 PC。我正在绘制一个 PSF 卷积。前面的代码没有问题。我的执行没有移动到打印('准备 fft')

def mono_PSF(self, wavelength, dioptres_def, dioptres_ob_ast, dioptres_ver_ast):
        print (wavelength)        
        r_per_logMAR = wavelength / (self.pupil_diameter * self.alpha)        
        d_per_logMAR = r_per_logMAR * 180 / math.pi        
        print ("d_per_logMAR: ", d_per_logMAR)        
        if d_per_logMAR > self.final_d_per_logMAR:            
            print ("Error: d_per_logMAR is too large (Landolt_C.py)")            
            raise SystemExit()        
        b_array_size = np.array([int(np.rint(self.alpha * self.array_size[0])), int(np.rint(self.alpha * self.array_size[1]))])        
        print("b_array_size: ", b_array_size)        
        wavefront = self.apply_defocus(dioptres_def) + self.apply_ob_astigmatism(dioptres_ob_ast) + self.apply_ver_astigmatism(dioptres_ver_ast)        
        # plt.figure()        
        # plt.imshow(wavefront)        
        # plt.show()        
        theta = wavefront * (2 * math.pi) / (wavelength)        
        # border the array of theta        
        b_theta = np.zeros((b_array_size))        
        # print theta.shape        
        # print b_theta.shape
        # print b_theta[0:self.array_size[0], 0:self.array_size[1]].shape        
        b_theta[0:self.array_size[0], 0:self.array_size[1]] = theta        
        dist = scipy.exp(1j * b_theta)        
        # border the aperture array        
        b_aperture = np.zeros((b_array_size))        
        b_aperture[0:self.array_size[0], 0:self.array_size[1]] = self.pupil        
        cw = b_aperture * dist        
        print ('ready for fft')        
        fourier_transform = np.fft.fft2(cw)        
        psf = np.abs(fourier_transform) ** 2  
        # take the modulus of the fft        
        psf = np.fft.fftshift(psf)  
        # shift the 4 quadrants        
        psf = psf / np.sum(psf)  
        # normalise the PSF to have a sum of 1        
        print('PSF generated')        
        return psf, b_array_size, d_per_logMAR   ```

标签: pythonnumpy

解决方案


推荐阅读