x = np.arange(-np.pi, np.pi, 0.01)
xb_seno = np.sin(x)
sigma = 0.5
#ruido = np.random.randn(len(x)) * sigma
ruido = np.random.randn(*x.shape) * sigma
xb = xb_seno + ruido
# 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])
# Função peso de Cressman
def weight(r, R):
w = (R**2 - r**2) / (R**2 + r**2 + 1e-12)
w[r >= R] = 0.0
return w
# Raios das passagens sucessivas
radii = [3.0, 2.0, 1.0, 0.5, 0.25, 0.175]
xa = xb.copy()
for R in radii:
increments = np.zeros_like(xa)
denom = np.zeros_like(xa)
for xo, yo in zip(obs_pos, obs_vals):
r = np.abs(x - xo)
w = weight(r, R)
increments += w * (yo - xa)
denom += w
# evita a divisão por zero
mask = denom > 0
xa[mask] += increments[mask] / denom[mask]
ruido = np.random.randn(len(LON)) * sigma
ruido = np.random.randn(*LON.shape) * sigma
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
ruido = np.random.randn(*LON.shape) * sigma
xb = xb_seno + ruido
# Posições
obs_locs = np.array([[-2.2, -1],
[-2.1, 0.5],
[-2.0, -0.5],
[-1.8, 2],
[ 0.9, -2.8],
[ 1.0, 1.0],
[ 2.0, 0.0],
[ 3.0, 0.5]])
# Valores medidos
obs_vals = np.array([-1.0, -1.5, -2.0, -1.0, 1.0, 0.0, 0.5, 0.0])
def weight(dx, dy, R):
r2 = dx**2 + dy**2
R2 = R**2
w = (R2 - r2) / (R2 + r2 + 1e-12)
w[r2 >= R2] = 0.0
zero fora do raio
return w
radii = [3.0, 2.5, 2.0, 1.5, 1.0, 0.5] # passos sucessivos
xa = xb.copy()
for R in radii:
inc = np.zeros_like(xa)
denom = np.zeros_like(xa)
for (xo, yo), obs in zip(obs_locs, obs_vals):
dx = LON - xo
dy = LAT - yo
w = weight(dx, dy, R)
inc += w * (obs - xa)
denom += w
mask = denom > 0
xa[mask] += inc[mask] / denom[mask]
Notebook com Atividade Prática 4
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
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style
Scoped style