IDL学习笔记(一)数据类型、基础运算、控制语句

近期,需要用到modis数据批量预处理,于是重新学习idl,感谢郭师兄推荐,以及张洋老师的详细教导。特以此为学习笔记,望学有所成。

IDL学习笔记(一)

  • 数据类型
    • 数据类型
    • 创建数组
    • 类型转换函数
    • 代码输出
      • print
      • 往文件中输出
    • help查询命令
  • 基础运算
    • 关系运算
  • 控制语句
  • 第一次程序编写
    • 函数编写
  • 第一次作业

IDL注释为;

数据类型

数据类型

在这里插入图片描述

创建数组

Result = 函数([D1[,…,D8])至多八个维度
常见函数:
BYTARR: 字节型数组
DBLARR:双精度浮点型
FLTARR:浮点型数组
FINDGEN:浮点型索引数组
indgen:整型索引数组
STRARR:字符串

函数不区分大小写

BYTARR,DBLARR,FLTARR,INTARR, LON64ARR,LONARR,UINTARR,ULON64ARR,ULONARR,STRARR
BINDGEN,DCINDGEN, DINDGEN,FINDGEN,CINDGEN,LINDGEN,-SINDGEN,UINDGEN, UL64INDGEN, ULINDGEN

类型转换函数

BYTE, FIX, COMPLEX, DCOMPLEX, DOUBLE, FLOAT, LONG, LONG64, STRING,UINT, ULONG, ULONG64

整型 转换为 浮点型
a = indgen(5,5)
浮点型 转换为 整型
b = float(a)

FIX:转换为整型

IDL 中第一维是列,第二维是行,下标从0开始

代码输出

print

在这里插入图片描述

往文件中输出

openw,1,'D:/out.txt'

这里的1是硬盘的一个硬件存储位置,用1代替,运行后会创建一个txt

b=intarr(3,4)
printf,1,b
printf,1,'hello'

这个意思是往1当中,把b写进去。这里的1代指硬件地址。此时打开文件是看不到东西的,因为文件被idl占用了,所以需要归还文件,代码为:

free_lun,1

此时可以看到内容了。

注意:
此时再次,使用

openw,1,'D:/out.txt'
printf,1,'hello'
free_lun,1

此时文件中只剩下hello了,这是因为openw这个操作,不加其他关键字的时候,代表新建一个文件,若存在,则清空后新建,写入新的东西,原本东西不复存在。

那么如何保留之前的,继写呢?加关键字!

IDL> openw,1,'D:/out.txt',/append

这样就可以续写了!

help查询命令

HELP[,Expression1,…,ExpressionN]
查询对象相关信息
查询未知对象a的信息

help,a

可以输出数据类型 、行数、列数。

基础运算

创建数组的时候,一定要记住他的下标(几)。且下标从0开始的。

a = findgen(3,4)
print,a[3,4]

上述代码是错误的,a没有第三列第四行,因为从0开始,下标最大只有[2,3]。

在这里插入图片描述
索引数组是从0开始,按行蛇形排列的。

IDL> a = findgen(3,4)
IDL> print,a 

结果为:
0.00000 1.00000 2.00000
3.00000 4.00000 5.00000
6.00000 7.00000 8.00000
9.00000 10.0000 11.0000

关系运算

在这里插入图片描述

a = findgen(3,4)
print,a gt 5

结果为:
0 0 0
0 0 0
1 1 1
1 1 1
返回的是0或者1

(a gt 5) * a
print,c

这样就可以把大于5的保存,小于5的赋值为0,结果为
0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000
6.0000000 7.0000000 8.0000000
9.0000000 10.000000 11.000000

控制语句

在这里插入图片描述

第一次程序编写

pro  program_name_firstClassprint,'helloa = 'cccc'print,aend

最基本的是:

pro 程序名程序题end

并且保存的文件名必须要 和 程序名 保持一致。

函数编写

如果需要函数,可以再pro前面先定义好function,比如


function fun_nameendpro  program_name_firstClassprint,'helloa = fun_name
end

第一次作业

在这里插入图片描述

pro  program_name_firstClassa = findgen(4,6)b = 3c = [3]d = [9,3,1]print,'a[3,4]'print,a[3,4]print,'a[15]'print,a[15]print,'a+b'print,a+bprint,'a[1,1]+b'print,a[1,1]+bprint,'a+c'print,a+cprint,'a+d'print,a+dend

输出:
a[3,4]
19.0000
a[15]
15.0000
a+b
3.00000 4.00000 5.00000
6.00000
7.00000 8.00000 9.00000
10.0000
11.0000 12.0000 13.0000
14.0000
15.0000 16.0000 17.0000
18.0000
19.0000 20.0000 21.0000
22.0000
23.0000 24.0000 25.0000
26.0000
a[1,1]+b
8.00000
a+c
3.00000
a+d
9.00000 4.00000 3.00000

解析:
① a[3,4]指的是第四列的第五行,行列不要搞混
② a+c等于一个单数3。是因为数组第二个元素维度不相同,则只有和【较小数组】一样大的元素进行相加后,得到结果。即c[0]+3 = 3.0000 ( 因为c是浮点数,所以默认是float )

pro  program_name_firstClassa = [[3,9,10],[2,7,5],[4,1,6]]print,a
end

结果为:

       3       9      102       7       54       1       6
pro  program_name_firstClassa = [[3,9,10],[2,7,5],[4,1,6]]print,'a'print,ab = [[7,10,2],[5,8,9],[3,1,6]]print,'b'print,bc = a+bprint,'c'print,cd = a*bprint,'d'print,d
end

A*B是对应位置元素相乘。

结果为:

a3       9      102       7       54       1       6
b7      10       25       8       93       1       6
c10      19      127      15      147       2      12
d21      90      2010      56      4512       1      36

除法的时候,处于整数要小心,是否结果需要的是float

在这里插入图片描述

pro  program_name_firstClassa = [[0,5,3],[4,0,2],[0,7,8]]b = [[0,0,1],[9,7,4],[1,0,2]]c = (a gt 3)*aprint,'a'print,aprint,'c'print,cprint,'b'print,bd = (b le 4)*b +(b gt 4)*9print,'d'print,de = (a+b)/2.0f = (a+b)/2print,'e'print,eprint,'f'print,fg = float(a+b)h = (a gt 0)+ (b gt 0)j = g/hprint,'j'print,j

结果为:


a0       5       34       0       20       7       8
c0       5       04       0       00       7       8
b0       0       19       7       41       0       2
d0       0       19       9       41       0       2
e0.00000      2.50000      2.000006.50000      3.50000      3.000000.500000      3.50000      5.00000
f0       2       26       3       30       3       5
j-NaN      5.00000      2.000006.50000      7.00000      3.000001.00000      7.00000      5.00000

解析:

  1. d = (b le 4)*b +(b gt 4)*9
  2. g = float(a+b)
    h = (a gt 0)+ (b gt 0)
    j = g/h

这两个逻辑关系要复习,在纸上画一下就可以知道为什么了


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TYUT设计模式大题

对比简单工厂,工厂方法,抽象工厂模式 比较安全组合模式和透明组合模式 安全组合模式容器节点有管理子部件的方法,而叶子节点没有,防止在用户在叶子节点上调用不适当的方法,保证了的安全性,防止叶子节点暴露…

16asm - 汇编介绍 和 debug使用

文章目录 前言硬件运行机制微机系统硬件组成计算机系统组成8086cpu组织架构dosbox安装配置debug debug使用R命令D命令E命令U命令T命令A命令标志寄存器 总结 前言 各位师傅大家好,我是qmx_07,今天给大家讲解 十六位汇编 和 debug调试器的使用 硬件运行…

自动化检测三维扫描仪-三维扫描仪检测-三维建模自动蓝光测量系统

在现代工业制造领域,特别是在航天航空和汽车行业,产品零部件的精度和质量至关重要。CASAIM自动化智能检测系统能够实现对产品零部件的快速、准确的三维尺寸检测。其自动蓝光测量系统利用蓝色激光光源,通过非接触式扫描,能够快速获…

Maven、JAVAWeb、Servlet

知识点目标 1、MavenMaven是什么Maven项目的目录结构Maven的Pom文件Maven的命令Maven依赖管理Maven仓库JavaWeb项目 2.网络基础知识 3、ServletMaven Maven是什么 Maven是Java的项目管理工具,可以构建,打包,部署项目,还可以管理…

VLC 播放的音视频数据处理流水线搭建

VLC 播放的音视频数据处理流水线搭建 音视频流播放处理循环音频输出处理流水线VLC 用 input_thread_t 对象直接或间接管理音视频播放有关的各种资源,包括 Access, Demux, Decode, Output, Filter 等,这个类型定义 (位于 vlc-3.0.16/include/vlc_input.h) 如下: s…

浅谈edusrc挖掘技巧+信息收集新姿势

目录 1 前言 2 信息收集资产收集 2.1域名查询 2.2邮箱查询 2.3 ICP备案信息查询 3 综合资产查询姿势 3.1 FOFA鹰图 3.2企查查/小蓝本 3.3 黑客语法(Google必应) 4 统一身份认证登录绕过 4.1逻辑缺陷绕过 4.2爆破账户/前端绕过验证 5 纯手工信…

Ubuntu Linux操作系统

一、 安装和搭建 Thank you for downloading Ubuntu Desktop | Ubuntu (这里我们只提供一个下载地址,详细的下载安装可以参考其他博客) 二、ubuntu的用户使用 2.1 常规用户登陆方式 在系统root用户是无法直接登录的,因为root用户的权限过…

RDIFramework.NET CS敏捷开发框架 SOA服务三种访问(直连、WCF、WebAPI)方式

1、介绍 在软件开发领域,尤其是企业级应用开发中,灵活性、开放性、可扩展性往往是项目成功的关键因素。对于C/S项目,如何高效地与后端数据库进行交互,以及如何提供多样化的服务访问方式,是开发者需要深入考虑的问题。…

ProtoBuf快速上手(C++)

在快速上⼿中,会编写第⼀版本的通讯录 1.0。在通讯录 1.0 版本中,将实现: • 对⼀个联系⼈的信息使⽤ PB 进⾏序列化,并将结果打印出来。 • 对序列化后的内容使⽤ PB 进⾏反序列,解析出联系⼈信息并打印出来。 •…

PHP 方头像转为圆图

业务需要把创建海报上的用户头像由方形转为圆形,前端的样式设置不能用。 故采用GD的函数来对方图进行裁剪处理为圆图。 目录 裁剪函数 本地图片 远程图片 效果 参考文章 总结 裁剪函数 从网上找的一个裁剪图片的函数。 代码如下: /* * 将图片切…

代理IP地址的含义与设置指南‌

在数字化时代,互联网已经成为我们日常生活不可或缺的一部分。然而,在享受互联网带来的便利的同时,我们也面临着隐私泄露、访问限制等问题。代理IP地址作为一种有效的网络工具,能够帮助我们解决这些问题。本文将详细介绍代理IP地址…

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…

红队/白帽必经之路(16)——如何用Metasploit 在边路进行信息刺探及爆破登录[既然是红队,那就对自己狠一点!!!]

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二 ➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advan…

vue实现echarts饼图自动轮播

echarts官网:Examples - Apache ECharts echartsFn.ts 把echarts函数封装成一个文件 import * as echarts from "echarts";const seriesData [{"value": 12,"name": "过流报警"},{"value": 102,"name&qu…

C++之异常智能指针其他

C之异常&智能指针&其他 异常关于函数异常声明异常的优劣 智能指针auto_ptrunique_ptrshared_ptrweak_ptr定制删除器 智能指针的历史与boost库 特殊类单例模式饿汉和懒汉的优缺点 C四种类型转换CIO流结语 异常 try括起来的的代码块中可能有throw一个异常(可…

混沌工程/混沌测试/云原生测试/云平台测试

背景 私有云/公有云/混合云等具有复杂,分布式,环境多样性等特点,许多特殊场景引发的线上问题很难被有效发现。所以需要引入混沌工程,建立对系统抵御生产环境中失控条件的能力以及信心,提高系统面对未知风险得能力。 …

Hive学习基本概念

基本概念 hive是什么? Facebook 开源,用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

数据分析流程中的Lambda架构,以及数据湖基于Hadoop、Spark的实现

文章目录 一、Lambda架构1、Lambda的三层架构2、简单解释:3、Lambda架构的优缺点 二、数据湖基于Hadoop、Spark的实现1、架构2、数据管理(存储层的辅助功能) 一、Lambda架构 1、Lambda的三层架构 Batch View(批处理视图层&#…

算法笔记:力扣142.环形链表返回链表入口

该题目通俗来说就是需要返回节点的入口,这点与判断是否有环不同,有环是通过快慢指针的形式来判断,但当快慢指针相等的时候,此时的节点不一定是环的入口节点。所以这题需要注意。 关键API: map.putIfAbsent(key,value)…

医院管理系统

私信我获取源码和万字论文,制作不易,感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求,创建了一个计…