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

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串