Log2预处理

l o g 2 预 处 理 log2预处理 log2

l g [ i ] = l o g 2 ( i ) + 1 lg[i]=log2(i)+1 lg[i]=log2(i)+1

l g [ i ] = l g [ i − 1 ] + ( 2 l g [ i ] = = i ) lg[i]=lg[i-1]+(2^{lg[i]}==i) lg[i]=lg[i1]+(2lg[i]==i)

int lg[100001];
inline void log_2()
{
    for (int i = 1; i <= n; i++)
    {
        lg[i] = lg[i - 1] + (1 << lg[i - 1] == i);
    }
}

还可以
用这种方法

int Log2[100001];
inline void log_2()
{
    for (int i = 2; i <= n; ++i)
    	Log2[i] = Log2[i / 2] + 1;
}

神之操作

std :: __lg(size_t)

(它是 O ( 1 ) O(1) O(1) 的)

### 使用ENVI对Landsat C2 L2数据进行预处理以计算地表温度 #### 打开并加载Landsat C2 L2数据 为了使用ENVI软件对Landsat Collection 2 Level-2 (C2 L2) 数据进行操作,需先启动ENVI 5.3或更高版本的应用程序。通过文件菜单中的“Open Image File...”,选择下载好的Landsat C2 L2产品文件夹内的MTL元数据文件(.txt),这会自动导入整个场景的数据集及其关联的波段信息[^1]。 #### 预处理步骤概述 对于求取地表温度而言,主要依赖于热红外波段的信息。而Landsat C2 L2级别的数据已经过辐射定标、大气校正等初步处理过程,提供了表面反射率和亮度温度的产品。因此,在此基础之上进一步获取地表真实温度相对简化了许多: - **确认输入数据**:确保选择了正确的Landsat C2 L2数据作为工作对象; - **提取所需波段**:通常情况下,只需关注包含有亮度温度值的一个或多个月度热红外波段(如TIRS_1, TIRS_2); ```matlab % 假设已载入Landsat C2 L2数据至变量data中 thermal_band = data.Band('TIRS_1'); % 提取出特定热红外波段用于后续分析 ``` - **应用发射率修正**:由于不同地物类型的发射特性差异较大,所以要基于土地覆盖分类图或其他辅助资料调整各像素点处的实际发射率参数; - **转换为绝对温度单位**:最后一步则是利用物理公式将原始观测到的亮度温度转化为实际的地表温度表示形式。一般采用普朗克定律来进行这种变换运算。 ```python import numpy as np def brightness_to_temperature(brightness_temp, emissivity=1.0): """ 将亮度温度转换成地表温度 参数: brightness_temp : float or array-like 输入的亮度温度数值. emissivity : float, optional 地面物体的平均发射率,默认设置为1即假设完全黑体. 返回: surface_temperature : ndarray 计算得到的地表温度数组. """ k1 = 774.89; # 波段特异性常数K1 k2 = 1321.08; # 波段特异性常数K2 surface_temperature = ((k2 / np.log((k1/brightness_temp)+1)) - 273.15)*emissivity; return surface_temperature ``` 上述Python函数实现了从给定的亮度温度向地表温度转变的过程,并考虑到了可能存在的非理想化条件下的发射率影响因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值