IDL interpol函数插值波谱响应函数

2024-04-12 18:08

本文主要是介绍IDL interpol函数插值波谱响应函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

interpol函数介绍

一维数组插值
result=interpol(v,x,xout,/lsquadratic,/quadratic,/spline,/NAN)
v为输入的数组,x为v中各个元素对应的横坐标值,xout为插值结果数组中各个元素对应的横坐标值的v值(可参考下面代码中的注释帮助理解)。
/lsquadratic,/quadratic,/spline为插值方法关键字,未设置时默认线性插值。
/NAN于设置插值的时忽略NAN值。
以下是官方对关键字的解释:
在这里插入图片描述

interpol函数举例
y=[1,3,5,7,9]
x=[0,1,2,3,4]
x_interpol=[1.5,2.5,3.5]
print,interpol(y,x,x_interpol)4.00000      6.00000      8.00000
y=[1,3,5,7,0.0/0]
x=[0,1,2,3,4]
x_interpol=[1.5,2.5,3.5]
print,y
print,interpol(y,x,x_interpol,/nan)1.00000      3.00000      5.00000      7.00000         -NaN4.00000      6.00000      8.00000
遥感中实际应用举例

波段响应函数,英文名为spectral response function(SRF)或者叫Relative Spectral Response (RSR) ,与宽波段传感器出现。我们知道每一个波段都有一个波段范围,比如HJ-b1(475nm)波段为520-430纳米,实际上传感器的感光元件在这个波段范围内的每一点所感应的强度都是不一样。在成像中,原则上讲应该根据波段响应函数来进行加权平均,但由于处理起来比较麻烦,而且一般的精度要求不太高,所以大多数图像都是直接取了波段范围内的中点值来运算。波段响应函数是描述一定波长范围内(超出波段范围)的量子效应,当需要精确计算像元响应时候,比如大气校正反演真实地表反射率,就需要使用波谱响应函数。参考:ENVI-IDL技术殿堂:ENVI下波谱响应函数(波段响应函数)制作
以下为FY3C-MERSI band5波谱响应函数,波长单位为nm,波长间隔为10nm
波谱响应函数第一列为波长,后面列为各波段对应的波谱响应值

9500.000  0.000
9700.000  0.000
9750.014  0.000
9759.999  0.00102
9770.013  0.00201
9779.995  0.00397
9790.006  0.00722
9799.984  0.01213
9809.993  0.01895
·······
12520.00  0.01050
12529.98  0.01039
12539.99  0.01133
12550.00  0.010
12560.01  0.009
12569.98  0.00
12579.98  0.00
12589.99  0.00
12599.98  0.00
12610.01  0.00
12620.00  0.00
12629.99  0.00
12640.01  0.00
12650.00  0.00
13000.00  0.00

而有时候辐射传输模型需要波长间隔为1nm或者25nm的波谱响应函数文件,所以需要插值得到符合要求的波谱响应函数。
以下代码为将原始10nm间隔波谱响应插值到1nm间隔。

pro interpol_functionfn=dialog_pickfile(title='请选择文件')openr,lun,fn,/get_lun;查询文件的行数nl=file_lines(fn);定义储存数据的数组data=fltarr(2,nl-1)readf,lun,datafree_lun,lun;获取起始波长start_wl=data[0,0];获取终点波长end_wl=data[0,-1];定义要得到的波长序列,即波长间隔为1nminterpol_wl=indgen(1,end_wl-start_wl+1)+start_wlwl=data[0,*]re=data[1,*];re为原始函数中的y值,wl为原始函数的x值,interpol_wl为要插值的x值;得到插值到的interpol_re y值interpol_re=interpol(re,wl,interpol_wl);循环写出新波谱响应函数nl=n_elements(interpol_wl)final_data=fltarr(2,nl)for i=0,nl-1 do beginfinal_data[1,i]=interpol_re[i]endforfor j=0,nl-1 do beginfinal_data[0,j]=interpol_wl[j] endfor;写出文件ofn=dialog_pickfile(title='文件保存为')openw,lun,ofn,/get_lunprintf,lun,final_datafree_lun,lun
end
运行结果:
      ······9960.00     0.2889819961.00     0.2914029962.00     0.2938239963.00     0.2962439964.00     0.2986649965.00     0.3010859966.00     0.3035059967.00     0.3059269968.00     0.3083479969.00     0.3107679970.00     0.313188·······10154.0     0.78526110155.0     0.78725410156.0     0.78924810157.0     0.79124110158.0     0.79323410159.0     0.79522710160.0     0.79722010161.0     0.79915510162.0     0.80109010163.0     0.80302510164.0     0.80496010165.0     0.806896······12474.0    0.031238812475.0    0.030418012476.0    0.029597212477.0    0.028776412478.0    0.027955612479.0    0.027134812480.0    0.026317312481.0    0.025664512482.0    0.0250118······

绘制波谱响应曲线:
在这里插入图片描述

这篇关于IDL interpol函数插值波谱响应函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/897858

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重