IDL基础语法

news/2024/7/16 7:17:39 标签: ide

1 创建变量

命名规则:变量名必须以字母开头。它们可以包括其它字母,数字,下划线,美元符号。

以下是创建不同数据类型的方法,我们只需了解即可,知道如何创建整型【16位有符号长整型】和浮点型

PRO learn
  ;创建整型变量a,b
  a=1
  b=1
  ;输出需要用,隔开
  print,'输出1:',a+b
  
  c=5
  d=2
  ;注意c/d都为整型,所以结果也是整型,舍弃小数点之后的数
  print,'输出2:',c/d
  
  e=9
  f=4.0
  ;有浮点数f,所以结果会隐式转换成浮点数,故而有小数点
  print,'输出3:',e/f
END


输出结果
输出1:2
输出2:2
输出3:2.25000

 2 程序运行

一个pro文件可包含多个pro过程或函数,和pro文件名相同的pro过程是主函数。

就是运行和pro文件名相同的函数

 我们发现运行结果是运行的learn,不运行lear。因为文件名是learn.pro,所以只运行函数learn

3 函数使用

pro learn
  ;声明变量,在同一行声明需要加上&符号
  x=2 & y=3 & z=4
  ;调用函数
  volume = calculate(x,y,z)
  print,'体积',volume
end

function calculate,x,y,z
;计算体积
  return, x*y*z
end

输出如下:
体积      24

4 运算符

4.1 数学运算符

变量里的取大取小

pro learn
  a=1
  b=2
  c=3
  
  ;取a/b最大的值赋给d
  d=a>b
  ;取b/c最大的值赋给e
  e=b>c
  print,'d=',d
  print,'e=',e
end


输出:
d=       2
e=       3

矩阵里的求大求小

 

 4.2 逻辑运算符

和C语言一样,不解释了

4.3 数组运算

 

 4.4 关系运算符

返回的结果是0/1,和C语言一样

  • EQ  等于
  • NE  不等于
  • GE 大于等于
  • GT 大于
  • LE 小于等于
  • LT  小于

 

pro learn
  a=1 & b=2
  print,'GT:',a GT b
  
  a=1 & b=2
  print,'NE:',a NE b
  
  a=1 & b=2
  print,'GE:',a GE b
  
  a=1 & b=2
  print,'EQ:',a EQ b
  
  a=1 & b=2
  print,'LE:',a LE b
  
  a=1 & b=2
  print,'LT:',a LT b
  
end

输出:
GT:   0
NE:   1
GE:   0
EQ:   0
LE:   1
LT:   1

 在矩阵上的应用

4.5 矩阵运算

b1>0 ,就是和0相比,,取最大的值,当b1小于0时,取0

(b1 LT 0)*-999+(b1 GE 0)*b1  当b1小于0时值为1,然后乘上-999,就相当于赋予-999.后面的(b1 GE 0)值为0

之后的情况类似,不懂再来问我

 

 5 循环语句

pro learn
  ;循环[0,3]
  ;这个循环ENDFOR可以不加
  FOR i=0,3 DO PRINT,i*2
  
  ;循环[0,5]
  FOR i=0,5 DO BEGIN
    PRINT,i
  ENDFOR
  
  ;[10,1] 步长为-2
  FOR i=10,1,-2 DO BEGIN
    PRINT,i
  ENDFOR
  
  
end

6 判断语句

PRO TEST_IF, num, div

  ;如果num%2==0,就执行。。。
  IF((num MOD 2) EQ 0) THEN BEGIN
    ;string(num)变为字符串类型
    PRINT,STRING(num)+' 是偶数!'
  ENDIF
  
  ;同理
  IF((num MOD div) EQ 0) THEN BEGIN
    PRINT,STRING(num)+'能够被'+STRING(div)+'整除!'
  ENDIF ELSE BEGIN
    PRINT,STRING(num)+'不能够被'+STRING(div)+'整除!'
  ENDELSE
  
  
END



PRO learn
  ;这是在主函数中调用其他PRO,和调用函数区分一下
  ;调用函数需要加()
  ;调用PRO不需要加
  TEST_IF,16,3
END

7 常用函数

PRO learn
  file = 'AMOD0320.hdf'
  ;求字符串长度,有多少个字符。    不用像C语言一样考虑'\0'
  PRINT, '长度: ', STRLEN(file)
  ;下标是从0开始的
  ;从下标为1的位置,向后取5个
  ;下标为1的位置是'M',向后取5个(包括M自身)  MOD03(5个字符)
  PRINT, '取: ', STRMID(file, 1, 5)
  
  ;求字符'.'的下标
  pos = STRPOS(file, '.', /REVERSE_SEARCH)
  print,pos  ;就是第8个
  ;从下标为pos+1的位置,往后取全部
  PRINT, '后缀: ', STRMID(file, pos+1)
END

输出:
长度:           12
取: MOD03
           8
后缀: hdf

WHERE()函数

where() 函数用于返回数组中满足特定条件的元素下标,常用于条件判断和数据筛选。该函数的基本语法如下:

  • WHERE, Data, Mask [, COUNT=variable]

其中 Data 是进行判断的数组,Mask 是布尔类型的数组,大小与 Data 相同,用于指定对应位置的元素是否符合条件。若符合条件,则在输出的数组中对应位置填 1;否则填 0。最终函数会返回一个一维数组,表示符合条件的元素在原始数组中的下标。

首先,使用 INDGEN 函数生成了一个从 0 开始、长度为 10 的一维数组,表示为 array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

然后使用 WHERE 函数,判断数组中哪些元素大于 5,返回对应的下标。具体来说:

  • array GT 5 表示将 array 数组的每个元素与 5 比较,将比 5 大的元素换成 1(表示 True),比 5 小的元素换成 0(表示 False),得到一个大小为 10 的布尔类型数组。【这个不用管】

  • count 表示符合条件(即大于 5)的元素个数,B 则是一个一维数组,保存了所有符合条件元素的下标(即在原数组中位置的索引值)。而 B_C 则是一个返回所有不符合条件(即小于等于 5)元素下标的数组。

  • 当同时使用 COMPLEMENT 和 NCOMPLEMENT 参数时,可以获得不符合和符合条件的两种下标值。COMPLEMENT=B_C 表示对不符合条件的元素返回的数组指定名称为 B_C,而 NCOMPLEMENT=count_c 表示不符合条件元素的个数保存在名称为 count_c 的变量中。

 

PRO learn
  ; Create an integer array 0,1,2,...9  
  array = INDGEN(10)
  PRINT, 'array =    ', array
  ; where()返回的 
  B = WHERE(array GT 5, count, COMPLEMENT=B_C, NCOMPLEMENT=count_c)
  ; Print met the search criteria:  
  PRINT, 'Number of elements > 5: ', count  
  PRINT, 'Subscripts of elements > 5: ', B  
  PRINT, 'Number of elements <= 5: ', count_c  
  PRINT, 'Subscripts of elements <= 5: ', B_C
END

输出:
array = 0       1       2       3       4       5       6       7       8       9
Number of elements > 5:            4
Subscripts of elements > 5:            6           7           8           9
Number of elements <= 5:            6
Subscripts of elements <= 5: 0     1      2     3      4        5

 


http://www.niftyadmin.cn/n/419033.html

相关文章

交通 | GAMS快速入门及其在运输问题求解的应用

推文作者​&#xff1a;AmieeXue 第一部分 GAMS编程求解运输问题 GAMS&#xff0c;全称The General Algebraic Modeling System&#xff0c;是一款通用的高级数学建模工具&#xff0c;它支持线性规划、非线性规划、混合整数规划问题、二次约束规划&#xff08;QCP&#xff09;…

关于【Git】push失败与使用小乌龟(TortoiseGit)时的一些报错解决方案

1.报错:No supported authentication methods available (server sent: publickey) 原因.小乌龟没有设置git路径&#xff0c;解决如下 将红框标注的地址改为自己的git安装地址即可。 2.使用git推送到远程仓库的时候报错Failed to connect to 127.0.0.1 port 7890: 拒绝连接 …

一文读懂性能测试

01、常见概念 吞吐量&#xff08;TPS, QPS&#xff09; 简单来说就是每秒钟完成的事务数或者查询数。通常吞吐量大表明系统单位时间能处理的请求数越多&#xff0c;所以通常希望TPS越高越好 响应时间 即从请求发出去到收到系统返回的时间。响应时间一般不取平均值&#xff0…

springboot不香吗?为什么还要使用springcloud--各个组件基本介绍

Eureka注册中心 1.1 Eureka简介 服务的管理 问题分析 service对外提供服务&#xff0c;需要对外暴露自己的地址。而consumer&#xff08;调用者&#xff09;需要记录服务提供者的地址。将来地址出现变更&#xff0c;还需要及时更新。这在服务较少的时候并不觉得有什么&…

Tcp的三次握手及netty和实际开发如何设置全连接队列参数

上图 第一次握手&#xff0c;client 发送 SYN 到 server&#xff0c;状态修改为 SYN_SEND&#xff0c;server 收到&#xff0c;状态改变为 SYN_REVD&#xff0c;并将该请求放入 sync queue 队列 第二次握手&#xff0c;server 回复 SYN ACK 给 client&#xff0c;client 收到…

英文单词小记

announced 宣布 shift 移动,转移&#xff0c;变换 has shifted foucs from ... to ... 已将焦点从 ... 转移到 ... various 各种各样的 estimate 估计 phase 阶段&#xff0c;时期 enterprise 企业 as such 像这样的 on the other hand (从)另一方面(来说) …

MM32F3273G8P火龙果开发板MindSDK开发教程11 -获取msa311加速器的xyz轴数据

MM32F3273G8P火龙果开发板MindSDK开发教程11 -获取msa311加速器的xyz轴数据 1、msa311简介 使用i2c总线 可以读取xyz轴的加速度 可以监测单击双击事件 可以监测运动与静止状态 可以监测自由落体事件&#xff0c;可用来监测摔倒或跌落。 可以监测旋转事件&#xff0c;类似手机…

【ChatGPT散文篇】ChatGPT-清华大学的讲座要点

刚听了清华大学关于ChatGPT的讲座&#xff0c;总结几个要点: 1、AI有可能成为地球上最初的硅基生命。 2、AI已迭代至博士研究生的智力水平。 3、以后将不存在学科和专业的概念&#xff0c;也不存在文科理科的区分&#xff0c;将是学科大融合。因为一个文科生哪怕不懂代码&a…