增加模块;增加主调用命令
This commit is contained in:
35
prosail_method/modules/dladgen.py
Normal file
35
prosail_method/modules/dladgen.py
Normal file
@ -0,0 +1,35 @@
|
||||
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
|
||||
Reference in New Issue
Block a user