36 lines
984 B
Python
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
|