# Posições
obs_pos = np.array([-2.2, -2.1, -2.0, -1.8, 0.9, 1, 2, 3])
# Valores medidos
obs_vals = np.array([-2.2, -1.8, 0.9, 0, 1, 2, 3, 4])
def weight(dx, L=L):
return np.exp(-(dx**2)/(2*L**2))
# Inicializa análise como background
xa = xb.copy()
# Aplica a correção observação por observação
for xo, yo in zip(obs_pos, obs_vals):
dx = x - xo
w = weight(dx, L=L)
xa = (1-w)*xa + w*yo
lon = np.linspace(-np.pi, np.pi, 10)
lat = np.linspace(-np.pi, np.pi, 10)
LON, LAT = np.meshgrid(lon, lat)
xb_seno = np.sin(LON)
sigma = 0.5 # desvio-padrão do ruído
ruido = np.random.randn(len(LON)) * sigma
xb = xb_seno + ruido
# Posições
obs_locs = np.array([[-2, -2],
[0, 0],
[2, 2]])
# Valores medidos
obs_vals = np.array([-1.5, -1.0, 0.5])
def weight(dx, dy, L=L):
return np.exp(-(dx**2 + dy**2)/(2*L**2))
# Inicializa a análise como background
xa = xb.copy()
# Aplica a correção observação por observação
for (xo, yo), obs in zip(obs_locs, obs_vals):
dx = LON - xo
dy = LAT - yo
w = weight(dx, dy, L=L)
xa = (1-w) * xa + w * obs
Notebook com Atividade Prática 3
https://cfbastarz.github.io/met563-3/
https://github.com/cfbastarz/MET563-3
carlos.bastarz@inpe.br
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style