端元选择方法及操作
- 格式:doc
- 大小:138.50 KB
- 文档页数:6
三元选择表达式在计算机编程语言中,三元选择表达式(ternary operator)也被称为条件运算符(conditional operator),主要是用于给予条件的判断,从而返回不同的值。
即三元操作符会判断一个给定的条件,若条件为真,则返回一个值;若条件为假,则返回另一个值。
它通常的写法是"condition? value1 : value2",condition是用于判断的条件,value1和value2是两个分别对应的结果。
在一般的语言中,三元操作符都有明确定义的语法,大多数的开发语言都支持三元表达式,并提供了使用范例和语法规范。
常见的语言如JavaScript、PHP、Java、C# 等都有三元表达式。
三元选择表达式的语法规范如下:variableName = (expression) ? value1 : value2;在三元表达式中,条件表达式可以是任车数据类型,例如:整数、字符、布尔值等。
不过,一般来说,只有布尔值这种数据类型最常用于条件表达式中。
同时,value1 和 value2 也可以是任何类型数据,包括表达式。
在条件表达式为 true 时,所返回的值由 value1 所决定;在条件表达式为 false 时,所返回的值由 value2 所决定。
三元选择表达式的优点1. 增强了代码的可读性通过使用三元操作符,可以使代码更加简洁而且易于阅读。
使用三元表达式可以将多行的 if-else 语句简化为一行,易于编写和修改,也易于阅读和维护。
2. 缩短了代码的长度由于三元表达式将多行的 if-else 语句压缩至单行代码,所以能够大大缩减代码的长度,并在一定程度上减少了程序的复杂度。
3. 提高了代码的可维护性三元选择表达式作为一种简洁而高效的语句,可以大大提高代码的可读性和可维护性。
通过改善代码的结构和提高代码的可读性,可以使代码更加易于调试和修改。
三元选择表达式的缺点1. 可读性不强尽管三元选择表达式在简化代码长度和提高编写效率方面非常有用,但这种表达式并不总是可以使程序更加易于理解,特别是当条件和返回值非常复杂时。
dax中,多端表筛选一端表的计值规则【原创版】目录1.概述:DAX 中的多端表和一端表2.多端表筛选一端表的计值规则3.实际应用场景4.总结正文在数据分析领域,DAX(Data Analysis Expressions)是一种强大的数据处理和计算语言,被广泛应用于 Microsoft Power BI 和 Excel 等工具中。
在 DAX 中,我们经常会遇到多端表和一端表的概念。
为了更好地理解多端表筛选一端表的计值规则,我们先来了解一下这两种表的含义。
多端表是指一个表包含多个端,每个端可以看作是表的一个维度。
例如,一个销售表可以包含产品、时间、地区等多个端。
而一端表则是指一个表只包含一个端,例如,一个产品表只包含产品这个端。
在实际操作中,我们常常需要对多端表进行筛选,只保留其中一个端,并根据这个端进行计值。
例如,我们需要统计某个时间段内各个产品的销售总额。
在这种情况下,我们需要筛选出时间端,并根据这个端计算销售额。
DAX 中提供了丰富的函数和操作符来实现多端表筛选一端表的计值规则。
以下是一些常用的方法:1.使用"SELECT"函数:我们可以使用"SELECT"函数来选择需要的端。
例如,在上面的例子中,我们可以使用"SELECT(时间,产品)"来选择时间和产品这两个端。
2.使用"FILTER"函数:"FILTER"函数可以帮助我们筛选出需要的端。
例如,我们可以使用"FILTER(时间,时间 >= 开始时间 && 时间 <= 结束时间)"来筛选出指定时间段内的时间端。
3.使用"CALCULATE"函数:"CALCULATE"函数可以在筛选出的端上执行计算。
例如,我们可以使用"CALCULATE(销售额 = 销售额 * 数量)"来计算销售额。
端元名词解释
端元是指在计算机程序语言中用于标识程序中某个特定位置的
符号。
端元可以用于分隔程序中不同部分的标识符,例如在 C 语言中,分号就是一个常用的端元。
端元也可以用于表示程序中的操作,例如在Python 语言中,冒号就是用于标识代码块的端元。
端元通常是单个字符,但也可能是多个字符组成的符号。
端元在程序语言中扮演着非常重要的角色,因为它们可以帮助解析器理解程序的结构和含义。
例如,在C 语言中,分号是一个常用的端元,它用于在语句末尾标识一条语句的结束。
因此,在编写C 程序时,每条语句都必须以分号结尾。
同样,在Python 语言中,冒号是用于标识代码块的端元,因此在编写Python 程序时,必须在每个代码块的开头使用冒号。
高光谱数据分析ENVI操作手册1.常见参数选择主菜单→File→Preferences●用户自定义文件(User Defined Files)图形颜色文件,颜色表文件,ENVI的菜单文件,地图投影文件等。
需重启ENVI ●默认文件目录(Default Directories)默认数据目录,临时文件目录,默认输出文件目录,ENVI补丁文件、光谱库文件、备用头文件目录等,需重启ENVI。
●显示设置(Display Default)可以设置三窗口中各个分窗口的显示大小,窗口显示式样等。
其中可以设置数据显示拉伸方式(Display Default Stretch),默认为2%线性拉伸。
●其他设置(Miscollaneous)制图单位(Page Unit),默认为英寸(Inches),可设置为厘米(Centimeters)还有缓冲大小(cache size),可以设置为物理内存的50-75%左右。
Image Tile Size不能超过4M。
2.显示图像及其波谱2.1.打开文件●主菜单,Open Image File→文件名.raw。
●或Window→Available Bands List→File →Open Image File→文件名.raw。
2.2.显示图像●显示单波段灰度级图像:Gray color,选择的波段一般是图像显示最清晰的波段。
●显示伪彩色图像:RGB color,选择具有明显吸收谷、强烈反射作用和所含信息量较大的波段作为彩色合成RGB波段。
●显示真彩色图像:波段列表(Available Bands List)中,右键→Load TrueColor 。
●图像保存:Display窗口,File→Save Image As→Image File,选择输出格式、路径和名称,OK。
●动画显示:Display窗口,Tools→Animation,动态显示各波段图像,能很快的分辨出包含信息量较多的波段。
一基于PPI的端元提取借助纯净像元指数(PPI)和n维可视化工具用于端元波谱收集。
第一步、获取纯净像元这个步骤是在MNF变换的结果上计算纯净像元指数(PPI),之后选择阈值范围从PPI图像上获得感兴趣区,感兴趣区包含的像元就是比较纯净的像元。
(1)打开高光谱数据。
(2)在ENVI主菜单中,选择Spectral ->MNF Rotation- > Forward MNF -> Estimate Noise Statistics From Dat a。
在标准ENVI文件选择对话框中,选择高光谱图像文件。
(3)打开Forward MNF Transform Parameters面板,选择MNF输出路径及文件名,单击OK执行MNF变换。
(4)在波段列表中输出MNF影像及特征曲线值。
从图中可以看出,大约20个波段以后的MNF的特征值很小(5)MNF变换后,在ENVI主菜单中,选择 Spectral-> Pixel Purity Index->[FAST] New Output Band。
在打开的Pixel Purity Index Input File对话框中,选择MNF变换结果,单击Spectral Subset按钮,选择前面10个波段(MNF后面波段基本为噪声),单击OK。
(6)在Display窗口中显示PPI结果。
选择Overlay->Region of Interest,在ROI Tool 面板中,选择Options->Band Threshold to ROI,选择PPI图像作为输入波段,单击OK,打开Band Threshold to ROI 面板(图14.19)。
Min Thresh Value:10,Max Thresh Value:空(PPI图像最大值),其他默认设置,单击OK计算感兴趣区,得到的感兴趣区显示在Display窗口中。
第二步、构建n维可视化窗口(1)在ENVI主菜单中,选择Spectral ->n-Dimensional Visualizer,在n-D Visualizer Input File 对话框中选择MNF变换结果,单击OK。
一基于PPI的端元提取借助纯净像元指数(PPI)和n维可视化工具用于端元波谱收集。
第一步、获取纯净像元这个步骤是在MNF变换的结果上计算纯净像元指数(PPI),之后选择阈值范围从PPI图像上获得感兴趣区,感兴趣区包含的像元就是比较纯净的像元。
(1)打开高光谱数据。
(2)在ENVI主菜单中,选择Spectral ->MNF Rotation- > Forward MNF -> Estimate Noise Statistics From Dat a。
在标准ENVI文件选择对话框中,选择高光谱图像文件。
(3)打开Forward MNF Transform Parameters面板,选择MNF输出路径及文件名,单击OK执行MNF变换。
(4)在波段列表中输出MNF影像及特征曲线值。
从图中可以看出,大约20个波段以后的MNF的特征值很小(5)MNF变换后,在ENVI主菜单中,选择 Spectral-> Pixel Purity Index->[FAST] New Output Band。
在打开的Pixel Purity Index Input File对话框中,选择MNF变换结果,单击Spectral Subset按钮,选择前面10个波段(MNF后面波段基本为噪声),单击OK。
(6)在Display窗口中显示PPI结果。
选择Overlay->Region of Interest,在ROI Tool 面板中,选择Options->Band Threshold to ROI,选择PPI图像作为输入波段,单击OK,打开Band Threshold to ROI 面板(图14.19)。
Min Thresh Value:10,Max Thresh Value:空(PPI图像最大值),其他默认设置,单击OK计算感兴趣区,得到的感兴趣区显示在Display窗口中。
第二步、构建n维可视化窗口(1)在ENVI主菜单中,选择Spectral ->n-Dimensional Visualizer,在n-D Visualizer Input File 对话框中选择MNF变换结果,单击OK。
端元提取是一种数学计算方法,用于从一组数据中提取一个特定的数值。
端元提取通常用于解决一些实际问题,例如从图像中提取特征、从音频信号中提取特征等。
端元提取的方法有很多种,其中最常用的方法是通过特征提取算法来提取端元。
特征提取算法是一种数学变换方法,通过将数据转化为新的形式来提取特征。
常见的特征提取算法包括傅里叶变换、小波变换、能量谱等。
在进行端元提取时,首先需要将数据输入到一个合适的特征提取算法中,然后根据算法的要求进行计算和分析,最后得到所需的端元。
不同的端元提取方法适用于不同的数据类型和问题,因此需要根据具体的情况选择合适的方法。
八、定义感兴趣区及分类主窗口—Classification:监督分类,非监督分类,决策树分类。
2)监督分类:按照分类以前自定义的样本进行分类。
2 样本选择:主影像窗口—Tools—Region Of Interest—ROI Tool 调出感兴趣区工具窗口进行样本选择,可以进行样本编辑(名称,颜色,填充方式等),样本选择越精确,分类结果越好。
2 选择分类方式:分类方式包括平行六面体法、最短距离法、马氏距离法、最大似然法、波谱角分类以及二进制编码法等,选择合适的分类方式。
2 引入影像—确定分类范围和波段—选择样本—给定阈值—确定存储路径和文件名—OK。
平行六面体法:用一条简单的判定规则对多波谱数据进行分类。
判定边界在图像数据空间中,形成了一个N维平行六面体。
平行六面体的维数由来自每一种选择的分类的平均值的标准差的阈值确定。
如果像元值位于N个被分类波段的低阈值与高阈值之间,则它归属于这一类。
如果像元值落在多个类里,那么ENVI将这一像元归到最后一个匹配的类里。
没有落在平行六面体的任何一类里的区域被称为无类别的。
最短距离法:用到每一个终端单元的均值矢量,计算每一个未知像元到每一类均值矢量的欧几里德距离。
所有像元都被归为最近的一类,除非限定了标准差和距离的极限(这时,会出现一些像元因不满足选择的标准,而成为“无类别”)。
马氏距离法:是一个方向灵敏的距离分类器,分类时用到了统计。
它与最大似然分类有些类似,但是假定所有类的协方差相等,所以是一种较快的方法。
所有像元都被归到最临近的ROI类,除非用户限定了一个距离阈值(这时,如果一些像元不在阈值内,就会被划为无类别)。
最大似然法:假定每个波段每一类统计呈均匀分布,并计算给定像元属于一特定类别的可能性。
除非选择一个可能性阈值,所有像元都将参与分类。
每一个像元被归到可能性最大的那一类里。
波谱角分类:(SAM)是一个基于自身的波谱分类,它是用n维角度将像元与参照波谱匹配。
选取合适的端元是成功的混合像元分解的关键。
端元选取包括确定端元数量以及端元的光谱。
理论上,只要端元数量m小于等于b+1(b表示波段数),线性方程组就可以求解。
然而实际上由于端元波段间的相关性,选取过多的端元会导致分解结果更大的误差。
端元光谱的确定有两种方式:(1) 使用光谱仪在地面或实验室测量到的“参考端元”;(2) 在遥感图像上得到的“图像端元”。
方法(1)一般从标准波谱库选择,方法(2)直接从图像上寻找端元可选择的方法有:从二维散点图中基于几何顶点的端元提取,借助纯净像元指数(Pixel Purity Index——PPI)和n维可视化工具用于端元波谱收集,基于连续最大角凸锥(Sequential Maximum Angle Convex Cone——简称SMACC)的端元自动提取。
下面介绍几种端元选择的方法。
1基于几何顶点的端元提取将相关性很小的图像波段,如PCA、IC、MNF等变换结果的前面两个波段,作为X、Y轴构成二维散点图。
在理想情况下,散点图是三角形状,根据线性混合模型数学描述,纯净端元几何位置分布在三角形的三个顶点,而三角形内部的点则是这三个顶点的线性组合,也就是混合像元,如图所示。
根据这个原理,我们可以在二维散点图上选择端元波谱。
在实际的端元选择过程中,往往选择散点图周围凸出部分区域,后获取这个区域相应原图上的平均波谱作为端元波谱。
图散点图上的纯净像元与混合像元下面以MNF变换后的第一、第二波段作为X、Y轴构建二维散点图,如图所示。
图 Scatter Plot窗口2基于PPI的端元提取借助纯净像元指数(PPI)和n维可视化工具用于端元波谱收集,下面详细介绍操作步骤。
第一步、获取纯净像元这个步骤是在MNF变换的结果上计算纯净像元指数(PPI),之后选择阈值范围从PPI图像上获得感兴趣区,感兴趣区包含的像元就是比较纯净的像元。
(1)打开高光谱数据。
(2)在ENVI主菜单中,选择Spectral ->MNF Rotation- > Forward MNF -> Estimate Noise Statistics From Data。
在标准ENVI文件选择对话框中,选择高光谱图像文件。
打开Forward MNF Transform Parameters面板,选择MNF输出路径及文件名,单击OK执行MNF变换。
(3)在ENVI主菜单中,选择Spectral-> Pixel Purity Index->[FAST] New Output Band。
在打开的Pixel Purity Index Input File对话框中,选择MNF变换结果,单击Spectral Subset按钮,选择前面10个波段(MNF后面波段基本为噪声),单击OK。
(4)在Pixel Purity Index Parameters面板中,设置Threshold Factor:3,其他参数默认,选择输出路径及文件名,单击OK执行PPI计算。
(5)在Display窗口中显示PPI结果。
选择Overlay->Region of Interest,在ROI Tool 面板中,选择Options->Band Threshold to ROI,选择PPI图像作为输入波段,单击OK,打开Band Threshold to ROI面板(图)。
Min Thresh Value:10,Max Thresh Value:空(PPI图像最大值),其他默认设置,单击OK计算感兴趣区,得到的感兴趣区显示在Display窗口中。
图 Band Threshold to ROI面板第二步、构建n维可视化窗口(1)在ENVI主菜单中,选择Spectral ->n-Dimensional Visualizer,在n-D Visualizer Input File对话框中选择MNF变换结果,单击OK。
(2)在n-D Controls面板中,选择1、2、3、4、5波段,构建5维的散点图。
第三步:选择端元波谱(1)在n-D Controls面板中,设置适当的速度(Speed),单击Start 按钮,在n-D Visualizer窗口中的点云随机旋转,当在n-D Visualizer窗口中的点云有部分聚集在一块时,单击Stop按钮。
(2)在n-D Visualizer窗口中,用鼠标左键勾画“白点”集中区域,选择的点被标示颜色。
(3)在n-D Controls面板中,选择Class->Items 1:20->White(用于删除点),单击Start按钮,当看到有部分选择的点云分散时候,单击Stop按钮,在n-D Visualizer窗口中选择分散的点,自动会将选择的点删除。
借助<-,->,New按钮可以一帧帧从不同视角浏览以辅助删除分散点。
(4)在n-D Visualizer窗口中,单击右键选择New Class快捷菜单,重复(1)~(3)选择其他“白点”集中区域。
图 n-D Visualizer窗口中的端元第四步、输出端元波谱(1)在n-D Controls面板中,选择Options->Mean All,在Input File Associated with n-D Scatter Plot对话框中选择原图像,单击OK。
(2)获取的平均波谱曲线绘制在n_D Mean绘图窗口中。
(3)参考“波谱分析工具”章节,识别每条波谱曲线对应的地物类型。
(4)在n_D Mean绘图窗口中,选择File->Save Plot As->Spectral Library(或者ASCII),将端元波谱保存为波谱库文件或者文本文件。
3基于SMACC的端元提取连续最大角凸锥(Sequential Maximum Angle Convex Cone )简称SMACC。
SMACC方法可从图像中提取端元波谱以及丰度图像(abundance Image)。
它提供了更快,更自动化的方法来获取端元波谱,但是它的结果近似程度较高,精度较低。
SMACC方法是基于凸锥模型(也称为残余最小化)借助约束条件识别图像端元波谱。
采用极点来确定凸锥,并以此定义第一个端元波谱;然后,在现有锥体中应用一个具有约束条件的斜投影生成下一个端元波谱;继续增加锥体生成新的端元波谱。
重复这个过程直至生成的凸锥中包括了已有的终端单元(满足一定的容差),或者直至满足了指定的端元波谱类别个数。
通俗的解释,SMACC方法首先找到图像中最亮的像元,然后找到和最亮的像元差别最大的像元;继续再找到与前两种像素差别最大的像素。
重复该方法直至SMACC找到一个在前面查找像素过程已经找到的像素,或者端元波谱数量已经满足。
SMACC方法找到的像素波谱转成波谱库文件格式的端元波谱。
下面以一个高光谱数据为例,详细介绍这个工具的操作过程。
(1)在ENVI主菜单中,选择File->Open Image File,打开高光谱数据文件。
(2)在ENVI主菜单中,选择Spectral ->SMACC Endmember Extraction,在Select Input Image对话框中选择高光谱数据文件,单击OK打开SMACC Endmember Extraction Parameters面板(图)。
(3)在SMACC Endmember Extraction Parameters面板中,需要填写以下参数:端元波谱提取数量(Number of Endmembers):15误差容限值(RMS Error Tolerance):0默认值0表示只有达到Number of Endmembers 参数指定的终端个数,SMACC 才会结束。
如果指定一个RMS误差,那么达到这个RMS误差的话,SMACC就会结束,不管是否获取指定数量的端元波谱。
反射率数据推荐使用,辐射亮度值数据推荐使用1。
但是要注意反射率数据常常扩大了倍数,比如扩大了10000倍,这个时候RMS Error Tolerance参数设置应该为10000x1%=100。
选择分离端元波谱的约束条件(unmixing constraint For Endmember Abundances):Positivity Only:把每个波长的正值端元波谱作为约束条件。
这个选项常用于反射率数据,因为负反射率值没有物理意义,Sum to Unity or Less:等于或者小于每个像素计算得到每种物质的组分之和作为约束条件。
当想从反射率数据中获取物质的物理意义和丰度图像的阴影图时候,可以选择这个约束条件,结果中会单独生成一个丰度阴影图像(Shadow Abundance)。
Sum to Unity:等于每个像素计算得到每种物质的组分之和作为约束条件。
当零端元波谱没有物理意义或者想获得暗端元波谱可以选择这个约束条件,这个约束条件推荐用于辐射亮度数据和热辐射数据。
合并相似端元波谱(Coalesce Redundant Endmembers):该选项是基于波谱角制图方法把阈值(在SAM Coalesce Value对话框中定义的值)内的所有端元波谱合并为一个端元波谱。
如果想要区分波谱比较相似的地物,不要选择该选项。
输出结果文件Endmember Location ROIs:该输出包括从终端单元波谱结果中产生的像元感兴趣区文件,这个输出文件是可选的。
Abundance Image:输出丰度图像,该输出文件将包括阴影图像和终端单元聚集图像。
该输出图像是可选的。
Select Output Spectral Library Enter Output Filename:该输出文件中包括提取出的终端单元的波谱库信息。
这个是必先项目。
(4)单击OK,执行SMACC过程。
图 SMACC Endmember Extraction Parameters面板获取的端元波谱以ENVI波谱库文件形式保存,设置的端元数为15,由于设置合并相似端元波谱选项,实际获得6种端元波谱,借助Spectral Analyst功能识别获得的端元波谱。
同时还可以得到每种端元波谱的丰度图像。