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.mzph.cn/web/61640.shtml

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

相关文章

【实体配置】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

使用 Pytorch 构建 Vanilla GAN

文章目录 一、说明二、什么是 GAN?三、使用 PyTorch 的简单 GAN(完整解释的代码示例)3.1 配置变量3.2 、PyTorch 加速3.3 构建生成器3.4 构建鉴别器 四、准备数据集五、初始化函数六、前向和后向传递七、执行训练步骤八、结果 一、说明 使用…

Python酷库之旅-第三方库Pandas(251)

目录 一、用法精讲 1186、pandas.tseries.offsets.BusinessMonthEnd.is_year_start方法 1186-1、语法 1186-2、参数 1186-3、功能 1186-4、返回值 1186-5、说明 1186-6、用法 1186-6-1、数据准备 1186-6-2、代码示例 1186-6-3、结果输出 1187、pandas.tseries.offs…

爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略

简介:本文聚焦 Requests 库的强大功能与应用实战。首先介绍其安装步骤及版本选择要点,随后深入讲解 GET 请求,以百度页面为例,展示如何发起基本 GET 请求、巧妙添加 headers 与参数以精准搜索,以及正确设置 encoding 避…

猎板 PCB特殊工艺:铸就电子行业核心竞争力新高度

在当今竞争激烈且技术驱动的电子制造领域,印制电路板(PCB)作为电子产品的关键基石,其特殊工艺的发展水平直接影响着整个行业的创新步伐与产品品质。猎板 PCB 凭借在厚铜板、孔口铺铜、HDI 板、大尺寸板以及高频高速板等特殊工艺方…

基于K-NN + GCN的轴承故障诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

【Gitlab】CICD使用minio作为分布式缓存

1、安装minio 下载适合自己系统版本的安装文件https://dl.min.io/server/minio/release/windows-amd64/ yum install xxx.rpm 2、配置/etc/profile export MINIO_ACCESS_KEYroot [ui登录账号] export MINIO_SECRET_KEYminioDev001 [ui登录密码] export MINIO_OPTS"…

手机卡限速丨中国移动5G变3G,网速500kb

以下猜测错误,又有新的猜测:河南移动的卡出省限速。可能是因为流量结算。 “2024年7月1日起,中国移动集团内部将开启跨省流量结算” 在深圳四五年了,之前没有过,就从上个月开始。11月底解除限速,12月刚开…

JavaScript根据数据生成柱形图

分析需求 // 定义一个数组来存储四个季度的数据 dataArray = []// 循环4次,获取用户输入的数据并存储到数组中 for i from 0 to 3// 获取用户输入的数据inputData = 获取用户输入的第(i + 1)季度的数据// 将数据存入数组dataArray[i] = inputData// 遍历数组,根据数据生成柱…

No module named ‘huggingface_hub‘

问题描述 from huggingface_hub import PyTorchModelHubMixin ModuleNotFoundError: No module named huggingface_hub解决方法 pip install huggingface_hub

Redis实现限量优惠券的秒杀

核心&#xff1a;避免超卖问题&#xff0c;保证一人一单 业务逻辑 代码步骤分析 全部代码 Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {Resourceprivate ISeckillVoucher…

Flutter:city_pickers省市区三级联动

pubspec.yaml city_pickers插件地址 自己用的GetBuilder页面模板 cupertino_icons: ^1.0.8 # 省市区城市选择 city_pickers: ^1.3.0编辑地址页面&#xff1a;controller class AddressEditController extends GetxController {AddressEditController();Future<Result?>…

ansible自动化运维(一)配置主机清单

目录 一、介绍 1.1了解自动化运维 1.2 ansible简介 1.3 ansible自动化运维的优势 1.4 ansible架构图 二、部署ansible 2.1 基本参数 2.2 Ansible帮助命令 2.3 配置主机清单 2.3.1 查看ansible的所有配置文件 2.3.2 /etc/ansible/ansible.cfg常用配置选项 2.3.3 ssh密…

视频流媒体服务解决方案之Liveweb视频汇聚平台

一&#xff0c;Liveweb视频汇聚平台简介: LiveWeb是深圳市好游科技有限公司开发的一套综合视频汇聚管理平台&#xff0c;可提供多协议&#xff08;RTSP/RTMP/GB28181/海康Ehome/大华&#xff0c;海康SDK等&#xff09;的视频设备接入&#xff0c;支持GB/T28181上下级联&#xf…

物联网——WatchDog(监听器)

看门狗简介 独立看门狗框图 看门狗原理&#xff1a;定时器溢出&#xff0c;产生系统复位信号&#xff1b;若定时‘喂狗’则不产生系统复位信号 定时中断基本结构&#xff08;对比&#xff09; IWDG键寄存器 独立看门狗超时时间 WWDG(窗口看门狗) WWDG特性 WWDG超时时间 由于…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中&#xff0c;将TXT格式的文本文件内容转换为Excel格式&#xff08;即CSV文件&#xff09;是一项常见的数据处理任务&#xff0c;适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel&#xff08;CSV&#x…

我的第一个创作纪念日 —— 梦开始的地方

前言 时光荏苒&#xff0c;转眼间&#xff0c;我已经在CSDN这片技术沃土上耕耘了365天 今天&#xff0c;我迎来了自己在CSDN的第1个创作纪念日&#xff0c;这个特殊的日子不仅是对我过去努力的肯定&#xff0c;更是对未来持续创作的激励 机缘 回想起初次接触CSDN&#xff0c;那…

Android:生成Excel表格并保存到本地

提醒 本文实例是使用Kotlin进行开发演示的。 一、技术方案 org.apache.poi:poiorg.apache.poi:poi-ooxml 二、添加依赖 [versions]poi "5.2.3" log4j "2.24.2"[libraries]#https://mvnrepository.com/artifact/org.apache.poi/poi apache-poi { module…

Leecode刷题C语言之N皇后②

执行结果:通过 执行用时和内存消耗如下&#xff1a; struct hashTable {int key;UT_hash_handle hh; };struct hashTable* find(struct hashTable** hashtable, int ikey) {struct hashTable* tmp NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);return tmp; }void insert(…

vue跳转以及传参

1.跳转页面的三种方法 <template><button click"twopage">跳转</button> </template><script setup> import { useRouter } from "vue-router"; const router useRouter(); // 获取 router 实例const twopage () > {r…