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