Files
HSI/prosail_method/modules/dladgen.py

36 lines
984 B
Python

import numpy as np
from modules.dcum import dcum # 确保你有这个函数
def dladgen(a, b):
"""
Generate Leaf Inclination Distribution Function (LIDF)
using a two-parameter beta distribution.
Parameters:
a, b : shape parameters of beta distribution
Returns:
freq : frequency (probability) per inclination class (length 13)
litab : central inclination angles (degrees)
"""
litab = np.array([5., 15., 25., 35., 45., 55., 65., 75., 81., 83., 85., 87., 89.])
freq = np.zeros_like(litab)
# First 8 bins: 10° steps
for i in range(8):
t = (i + 1) * 10
freq[i] = dcum(a, b, t)
# Next 4 bins: finer steps from 80° to 89°
for i in range(8, 12):
t = 80.0 + (i - 8 + 1) * 2.0
freq[i] = dcum(a, b, t)
freq[12] = 1.0 # total cumulative = 1
# Convert cumulative to class probabilities
for i in range(12, 0, -1):
freq[i] -= freq[i - 1]
return freq, litab