python - 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 ```
解决方案
推荐阅读
- android - 如何检测视频在 webview 上被点击?
- javascript - Javascript - 选择选项不起作用
- java - 对单个进程共同使用多个线程
- parse-platform - 解析服务器 cosmosdb 不返回 GeoPoint 的结果
- php - Laravel 护照 oauth 路线总是返回 401 未经授权
- excel - 从范围对象中选择单元格
- c# - Windows 服务中的重叠任务
- javascript - 通过 cookie 检查用户是否已经看到了 div
- javascript - 设置间隔时如何在jquery中停止或结束函数
- sql - 如何根据年份获取 SQL 结果?