ENVI IDL学习笔记之基本操作

news2024/10/1 7:46:26

前言

ENVI IDL(交互式数据语言)是一个通用的科学计算包,它提供了一套数学函数、数据分析工具,以及一些科学可视化和动画工具。IDL 是 ENVI 图像处理和分析软件的基础,可用于编写脚本并自动执行许多使用 ENVI 图形用户界面执行的操作。

IDL 可以交互使用或以“批处理”模式使用。 有一个用于交互使用的高效命令解释器,以及开发可以解释或编译的脚本的选项。 还有一个图形化的 IDL 开发环境。

1、打开ENVI 5.X+IDL 8.5 (64-bit)

尝试在 IDL 提示符下键入以下四个命令:

a = 5
print, a
x = randomu(999)
print, x

观察“print, a”语句和“x = randomu(999)”语句之间的语法差异。IDL 区分不返回值且调用语法中没有括号的过程(例如 print),以及 函数(例如 randomu)在调用时确实使用括号并且总是返回一个值。

现在试试这些命令:

a = [55, 38, -17.333]
b = indgen(3)
print, "a = ", a
print, "b = ", b
print, "a*b = ", a*b

观察数组变量看起来就像标量变量。 IDL 设计用于处理多维数组,许多运算符以“自然方式”处理数组。 我们将在本教程的后面部分看到更多相关信息。

要重复命令,您可以使用箭头键上下浏览之前的命令。 当您到达要重复的命令时,按回车键。

输入问号 ? 寻求在线帮助。 这将弹出一个单独的 GUI,用于访问 IDL 用户信息。 (请注意,在 IDL 提示符下键入“help”会做一些完全不同的事情——它会为您提供所有当前变量和函数的列表)。

一个分号“;” 表示一行的其余部分由注释组成。 行尾的美元符号“$”表示行继续,“&”符号将命令组合在一起。 我们将在下面有关运行模式的部分中看到更多内容。

要退出 IDL,请键入:

exit

对于执行管理,您应该注意一些特殊字符:

  • Ctl-C: 如果可能,停止运行(失控)程序,而不杀死 IDL

  • Ctl-Z: 暂停 IDL

  • Ctl-: 停止(中止)正在运行的程序,可能会使变量和文件处于不确定状态

  • Ctl-D: 停止 IDL,例如退出

2、程序和批处理模式

IDL 可以通过交互式输入命令、交互式创建程序、从命令行读取程序来运行,也可以以批处理模式运行。

当您在命令行中键入命令时,当您按下回车键时,每一行都会立即执行。 (可以在行尾使用美元符号“$”转移到下一行)。

(1)批处理模式

以批处理模式运行是类似的,除了命令来自文件。 在文件名前面加上符号“@”。 pro 子目录中的文件 batch_two_prints 包含四行

a = 5
print, a
a = [2, 3]
print, a

在 IDL 提示符下键入以下内容:

@pro/batch_two_prints

(2)程序

当以交互方式键入并以批处理模式运行时,每一行都会立即执行。 您可以编写可以多次存储和运行的程序,也可以编写可以从程序和其他函数中调用的函数。

要从命令行创建程序,请使用执行命令 .RUN,输入您的命令,然后键入 END。 这时候你的程序就会被编译执行:

ENVI> .RUN
- a = 25
- b = 3
- c = a * b
- print, a, b, c
- END
% Compiled module: $MAIN$.
      25       3      75

如果文件中有相同的命令集,则可以执行相同的程序:

.RUN pro/simple_main.pro

如果您不希望程序立即执行,请使用 .COMPILE 而不是 .RUN。 然后定义的变量和过程将可用。

上面的例子让它看起来和批处理模式运行的程序很相似。 考虑以下阶乘函数的简单计算。 作为批处理文件,pro/batch_loop 看起来像:

f = 1
for k=1,6 do begin $
    f = k * f & $
    print, f & $
end

命令用“&”分隔,行必须连续。 整个循环基本上必须在一行上,因为每一行都会在遇到时立即执行。 想象一下嵌套循环,里面有很长的计算。

与文件中的程序相同的计算不需要 &s 和 $s:

f = 1
for k=1,6 do begin
    f = k * f
    print, f
endfor
end

以函数的使用为例:

IDL> .RUN pro/simple_routine
IDL> simple

可以从批处理文件运行程序。 尝试:

IDL> @batch_run

这会读取并运行 simple_main.pro,然后再次运行它,然后读取并运行 simple_routine.pro。

有关创建和运行程序(包括其他命令)的更多信息,请参阅 IDL 联机帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【鲁棒优化】基于联合聚类和定价的鲁棒功率控制方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

12接口扩展无忧,存储显示充电都拉满,ORICO XDR扩展坞上手

扩展坞现在很多朋友都用,一般是配合笔记本使用,有些带有桌面模式的手机、平板装上扩展坞之后,也可以变身全能型的办公设备。现在市面上的扩展坞选择不少,我目前用的是一款功能比较全的12合1扩展坞,来自国产品牌ORICO。…

【机会约束、鲁棒优化】具有排放感知型经济调度中机会约束和鲁棒优化研究【IEEE6节点、IEEE118节点算例】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Django/Vue实现在线考试系统-03-开发环境搭建-MySQL安装

1.概述 MySQL是一种关系型数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库…

Redis的持久化操作

目录 介绍 RDB(redis database) 是什么 备份如何执行 配置 优势 劣势 备份恢复 AOF(Append Only File) 是什么 数据恢复 正常恢复 异常恢复 同步频率设置 重写(压缩) 持久化流程 优势 劣势 总结 介绍 redis持久化操作方式有两种:RDB和AOF。 RDB(redis database) 是…

mysql数据库之触发器

触发器是与表有关的数据库对象,指在insert、update、delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。 使用别名old和new来引用触发器…

华为OD机试题,用 Java 解【子序列长度】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

力扣第99场双周赛题目记录(复盘)

第一题 2578.最小和分割 给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所…

DolphinScheduler理论知识以及手机、邮箱、钉钉、电话等多种告警部署实操

1、DolphinScheduler简介 1.1、DolphinScheduler概述 Apache DolphinScheduler是一个新一代分布式、易扩展的可视化大数据工作流任务调度平台,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任…

IDEA插件开发.02之“异味”代码收集插件

前言许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”,共享文档复制黏贴略显麻烦,所以想着是否可以搞一个IDEA插件来帮忙收集常见代码,毕竟IDEA作为后端程序员必备的开发工具,显然会方便很多。于是&…

STM32开发(七)STM32F103 显示 —— 数码管显示 详解

文章目录一、基础知识点二、开发环境三、STM32CubeMX相关配置四、Vscode代码讲解五、结果演示一、基础知识点 了解 TM1620芯片手册 。本实验是基于STM32F103开发 通过GPIO模拟时序 实现TM1620数码管显示。 准备好了吗?开始我的show time。 二、开发环境 1、硬件开…

flink sql (jdbc)如何支持where 条件下推数据库

背景 最近在使用 flink sql (jdbc)做离线数据同步(历史数据修复),遇到一个问题,只同步几条数据的情况下,测试环境执行竟然需要30分钟。 进一步研究,发现where条件没有下推到数据库…

项目心得--网约车

一、RESTFULPost:新增Put:全量修改Patch:修改某个值Delete: 删除Get:查询删除接口也可以用POST请求url注意:url中不要带有敏感词(用户id等)url中的名词用复数形式url设计:api.xxx.co…

分形(Fractal)及分形维数(Fractal dimension)

文章目录1. 分形介绍2. 分形的定义3. 分形维数介绍4. 历史5. 缩放的作用(Role of scaling)6. D 不是唯一描述符7. 分形表面结构8. 例子8.8 Hausdorff dimension8.8.1 直观概念8.8.2 正式定义8.8.2.1 Hausdorff dimension8.8.2.2 Hausdorff content8.8.3 …

C++ 实现一个反射类

代码环境为VScode CMake GCC 8.1.0 首先,如何才能做到给我一个名字我就能拿到这个对象的这个值,也是比较难的一个地方,方法如下 #define OFFSET(className,fieldName) (size_t)&(((className*)0)->fieldName)这个能够得到该成员变…

数据结构3——线性表2:线性表的顺序结构

顺序结构的基本理解 定义: 把逻辑上相邻的数据元素存储在物理上相邻(占用一片连续的存储单元,中间不能空出来)的存储单元的存储结构 存储位置计算: LOC(a(i1))LOC(a(i))lLOC(a(i1))LOC(a(i))l LOC(a(i1))LOC(a(i))l L…

【pyqt】win10下使用pycharm安装并配置pyqt环境,并用其进行界面绘制

目录1.PyQt简介2.PyQt安装2.PyQt中界面绘制工具集在pycharm中的配置2.主程序引入生成的界面类1.PyQt简介 PyQt是一个基于Python语言的开源图形用户界面(GUI)框架,它是Qt跨平台应用程序框架的Python绑定,可以用于创建各种不同类型…

js 拷贝

一、浅拷贝 对数据拷贝的时候只拷贝一层,深层次的只拷贝了地址 1. (1)对于数组类型,可以使用slice(start, end)方法,返回一个新的数组。 var arr1 arr.slice(0); (备注:slice 方法一直复制到…

(Fabric 超级账本学习【2】)Fabric2.4环境下部署自己编写的链码

(Fabric 超级账本学习【2】)Fabric2.4环境下部署自己编写的链码 1、前提是搭建好了Fabric 2.4(Fabric2.x)版本的区块链网络,并在以此环境下部署自己编写的链码,如下图先进入 test-network 文件夹目录下 2、…

23年PMP考试,应试技巧二十五条(含资料)

1.一定要认真阅读答案的全部四个选项。 千万不要看到某个选项是正确的,就不看其他选项,因为可能还有更正确的选项。PMP考的是选项的相对正确程度,而不是绝对正确程度,这与英语水平考试截然不同。可能四个选项都是正确或错误的&am…