IDL基础运算符.docx
- 文档编号:11329042
- 上传时间:2023-02-27
- 格式:DOCX
- 页数:10
- 大小:16.75KB
IDL基础运算符.docx
《IDL基础运算符.docx》由会员分享,可在线阅读,更多相关《IDL基础运算符.docx(10页珍藏版)》请在冰豆网上搜索。
IDL基础运算符
运算符是各个语言中必不可少的部分,IDL作为一种基于矩阵运算的语言,实际应用实际应用中运算符操作有很多的技巧。
很多的时候一个语句能实现复杂的功能,这点在波段运算中能够体现出来。
1运算符
1.1数学运算符
IDL中的数学运算符有加(+)、增运算(++)、减(-)、减运算(--)、乘(*)、除(/)、幂(^)、取余(mod)、取小(<)和取大(>)。
1.1.1增运算和减运算(++、--)
这两个运算跟C里面的是一样的;
IDL>var=20
IDL>print,var++
20
IDL>print,var
21
IDL>var=indgen
(2)
IDL>print,var++
01
IDL>print,var
12
1.1.2幂运算(^)
IDL>var=2
16
IDL>print,var^5
32
IDL>var=[2,3]
IDL>print,var^2
49
1.1.3取余运算(mod)
IDL>var=32
IDL>print,varmod4
0
IDL>print,varmod5
2
IDL>var=[2,3]
IDL>print,varmod2
01
1.1.4取大和取小运算(>、<)
IDL>var=32
IDL>print,var>39
39
IDL>print,var<39
IDL>print,var>25
2530
1.2逻辑运算符
1否则返回0
IDL中逻辑运算有几个:
&&,||,和
1.2.1&&
逻辑的与运算,如果表达式为真或非零则返回
IDL>PRINT,5&&2
1
IDL>PRINT,5&&0
0
IDL>PRINT,"sd"&&"d"
1
IDL>PRINT,"sd"&&""
1
IDL>PRINT,"sd"&&""
0
1.2.2||逻辑的或运算
IDL>PRINT,5||2
1
IDL>PRINT,5||0
IDL>IF((5GT3)||(4GT5))
THENPRINT,'True'
True
1.2.3~逻辑的非运算
IDL>print,~3
0
IDL>print,~0
1
1.3位运算符
IDL中有四个位运算符:
AND,NOT,OR,andXOR.。
1.3.1位加运算符(AND)
IDL>print,5AND6
4
0110←5
0111←6
0110←4
1.3.2位取反运算符(NOT)
IDL>print,not1
1.3.3位或运算符(OR)
IDL>print,5or10
15
0101←5
1010←10
1111←15
1.3.4位与或运算符(XOR)
IDL>print,3XOR5
6
0011←3
0110←5
0110←6
1.4关系运算符
IDL中的关系运算符包括EQ、NE、GE、GT、LE、LT几个,关系运算符
返回的是真“True”或假“False”。
1.4.1EQ(Equalto)
等运算符,如果运算符两边相同则返回真,否则返回假;
IDL>print,2EQ2.0
1
IDL>var=[2,3]
IDL>print,vareq210
1.4.2NE(NotEqualto)
不等运算符,如果运算符两边不等则返回真,否则返回假;
IDL>print,2NE2.0
0
IDL>print,2NE1
1
IDL>var=[2,3]
IDL>print,varne2
01
1.4.3GE(Greaterthanorequalto)
大于等于运算符,如果运算符两边左边大于等于右边则返回真,否则返回
假;
IDL>print,2GE1
1
IDL>var=[2,3]
IDL>print,varge2
11
1.4.4GT(Greaterthan)
大于运算符,如果运算符两边左边大于右边则返回真,否则返回假;
IDL>print,2GT1
1
IDL>var=[2,3]
IDL>print,vargt2
01
1.4.5LE(Lessthanorequalto)
小于等于运算符,如果运算符两边左边小于等于右边则返回真,否则返回
假;
IDL>print,2LE1
0
IDL>print,2LE12
1
IDL>var=[2,3]
IDL>print,varle3
11
1.4.6LT(Lessthan)
小于运算符,如果运算符两边左边大于右边则返回真,否则返回假;
IDL>print,2LT1
0
IDL>print,2LT12
1
IDL>print,2LT2
0
IDL>var=[2,3]
IDL>print,varlt3
10
1.4.6数组间运算
IDL>a=[2,3,5]
IDL>b=[1,4,5]
IDL>print,aGEb
101
IDL>b=[1,4,5,6]
IDL>print,aGEb
101
IDL>print,aLEb
011
1.5数组运算符
1.5.1#数组乘(列乘行)
IDL>PRINT,array1
121
2-12
IDL>PRINT,array2
13
01
11
IDL>PRINT,array1#array2
7-17
2-12
1.5.2##矩阵乘(行乘列)
IDL>PRINT,array1
121
2-12
IDL>PRINT,array2
13
01
11
IDL>PRINT,array1##array2
26
47
1.6其他运算符
1.6.1小括号()
表达式组合和控制一系列表达式的优先级;
IDL>PRINT,3+4*2^2/2
11
IDL>PRINT,(3+(4*2)^2/2)
35
1.6.2中括号[]
数组的连接或元素调用;
IDL>C=[0,1,3]
IDL>PRINT,[C,5]
0135
IDL>PRINT,C[2]
3
1.6.3条件表达式?
:
该运算符的用法是:
value=expr1?
expr2:
expr3
如果expr1是true,那么value等于expr2否则value=expr3.
IDL>A=6&B=4
IDL>print,(AGTB)?
A:
B
6
1.6.4对象方法调用符->
oWindow->Draw
1.6.5指针引用符*
指针调用符为*,调用格式为*指针变量。
IDL>point1=ptr_New(34)
IDL>print,*point1
34
2运算符波段运算举例
2.1数据小于0的赋予0b1>0
2.2数据值小于0的赋予-999
(b1LT0)*-999+(b1GE0)*b1
2.3三个波段求平均值,如该波段小于0则不参加运
算。
如某点b1:
4;b2:
6;b3:
0;那平均值ave=
(b1+b2+b3)/(1+1);
b1>0+b2>0+b3>0)/(((b1ge0)+(b2ge0)+(b3ge0))>1)
2.4两幅图像,图像1波段b1中的云部分(象元值
大于200)用图像2的波段b2代替
(b1GT200)*b2+(b1LE200)*b1
2.5波段分段赋值,如B1中小于0部分等于0,b1
中值在[0,10]之间赋为原数值的100倍,如果b1值大
于10则赋为原数值的10倍。
(b1LE0)*b1>0+((b1ge0)and
(b1le10))*b1*100+(b1gt10)*b1*10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IDL 基础 运算