![](/img/trans.png)
[英]why subtracting an image from noise (having very low intensity), causes image to loose its maximum value (intensity)
[英]Why is there noise for higher bandwidth intensity distributions?
我一直在尝试以计算方式评估以下 E 场:
它基本上是给定波长的波的总和,由波长的高斯分布的平方根加权。
我通过 Python 通过包 scipy.integrate.quad 函数对 $x$ 的每个值执行高斯正交积分来计算它。 代码如下:
# Imports
import numpy as np
import scipy as sp
from scipy import integrate
# Parameters
mu = 0.635 # mean wavelength
sigma = 0.01 # std dev of wavelength distribution
# wl is wavelength
x_ara = np.arange(0, 1.4, 0.01)
# Limits of Integration
lower, upper = mu - 4*sigma, mu+4*sigma
if lower < 0 :
print('lower limit met')
lower = 1e-15 # cannot evaluate sigma = 0 due to singularity for gaussian function
# Functions
def Iprofile_func(wl, mu, sigma):
profile = np.exp(-( ((wl-mu) / (np.sqrt(2)*sigma))**2))
return profile
def E_func(x_ara, wl, mu, sigma):
return np.sqrt(Iprofile_func(wl, mu, sigma)) * np.cos(2*np.pi/wl * (x_ara))
# Computation
field_ara = np.array([])
for x in x_ara:
def E(wl):
return E_func(x, wl, mu, sigma)
field = sp.integrate.quad(E, lower, upper)[0]
field_ara = np.append(field_ara, field)
我固定 $\\mu$ = 0.635 的值,并对 $\\sigma$ 的两个值执行相同的计算,$\\sigma$ = 0.01 和 $\\sigma$ = 0.2。 我得到的数组,我在下面绘制,上面的图是波长分布,而下面的图是计算场数组:
为什么sigma值增大时计算域中会出现噪声?
对于较大的 x,即使 lambda 的微小变化也确实会导致被积函数快速波动。 在某些时候,数值积分程序要么需要很长时间才能收敛,要么不会考虑足够多的积分点,因此每个积分点的贡献不会完全抵消,而是会准确显示您看到的噪声。 当我运行代码时,我实际上收到了来自 scipy 的关于达到限制的警告(“IntegrationWarning:已达到最大细分数(50)。”)。
好消息:您知道对于足够大的 x,积分必须为零。 没有必要在合理范围之外计算它。
例子:
x = 10,mu = 0.635,西格玛 = 0.01
积分界限是 mu+/-4sigma = [0.595, 0.675]
2Pi/0.595*10=105.6, 2Pi/0.675*10=93.08
这意味着被积函数在 x=10 处的波长范围内大约有两次振荡。
x = 100,其他都一样
这意味着被积函数在波长范围内振荡 20 次。
x = 10, mu = 0.635, sigma = 0.1
积分界限是 mu+/-4sigma=[0.235, 1.035]
2Pi/0.235*10=267.37, 2Pi/1.035*10=60.71
这意味着被积函数在 x=10 处已经在波长范围内进行了 33 次振荡。
x = 100,其他都一样
这意味着被积函数在波长范围内有 329 次振荡。
如果 x 或 sigma 变大,将需要越来越多的积分点。 因此,对于更大的 x,没有增加 scipy.integrate 中的限制的替代方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.