def mv2hh(mv, ks, theta, dB=True): """ Input: mv: soil moisture (v/v) ks: microwave roughness theta: incidence angle (degree) Output: hh: backscatter coefficient """ ep = mv2ep(mv) gamma0 = ep2gamma(ep) g = 0.7 * (1 - np.exp(-0.65 * ks**1.8)) q, p = foreward_model(ks, gamma0, theta, dB=False) gamma_h = horizontal_fresnel(ep, theta) gamma_v = vertical_fresnel(ep, theta) hh = g * np.sqrt(p) * np.cos(np.radians(theta))**3 * (gamma_v - gamma_h) if dB: hh = 10 * np.log10(hh) return hh
def mv2hh(mv, ks, theta, dB=True): """ Input: mv: soil moisture (v/v) ks: microwave roughness theta: incidence angle (degree) Output: hh: backscatter coefficient """ ep = mv2ep(mv) gamma0 = ep2gamma(ep) g = 0.7*(1-np.exp(-0.65*ks**1.8)) q, p = foreward_model(ks, gamma0, theta, dB=False) gamma_h = horizontal_fresnel(ep, theta) gamma_v = vertical_fresnel(ep, theta) hh = g*np.sqrt(p)*np.cos(np.radians(theta))**3*(gamma_v-gamma_h) if dB: hh = 10*np.log10(hh) return hh
mv = ep2mv(ep) # estimate ks # convert from dB to linear q = 10**(q / 10.0) ks = -np.log(1 - q / (0.23 * np.sqrt(gamma0))) return mv, ks if __name__ == "__main__": # fig 11 and 12 of Oh(1992) theta = 40 mv = 0.25 ep = mv2ep(mv) gamma0 = ep2gamma(ep) ks = np.linspace(0, 7) q, p = foreward_model(ks, gamma0, theta) #plt.plot(ks,q) #plt.show() #plt.plot(ks,p) #plt.show() # inverse modelling ks = 0.1 theta = 40 mv = 0.35 ep = mv2ep(mv)
q: (dB) theta: incidence angle (degree) """ guess_ks_gamma0 = [0.2, 0.4] ks_gamma0 = fmin(res_ks_gamma0, guess_ks_gamma0, args=(p, q, theta), disp=False) ks = ks_gamma0[0] gamma0 = ks_gamma0[1] return ks, gamma0 def inverse_oh1994(p, q, theta): """ """ ks, gamma0 = estimate_ks_gamma0(p, q, theta) ep = gamma2ep(gamma0) mv = ep2mv(ep) return mv, ks if __name__ == "__main__": mv = 0.15 ks = 0.3 theta = 40 ep = mv2ep(mv) gamma0 = ep2gamma(ep) p,q = foreward_model(ks, gamma0, theta) print inverse_oh1994(p, q, theta)