• IDL学习:语法基础-运算


            运算符优先级从小到大排序依次为:条件运算符、逻辑运算符、位运算符、关系运算符、数字运算符、括号运算符。

    1. 条件运算符

            IDL的条件运算符是“?:”,语法为

    value = expr1 ? expr2 : expr3

    其含义表示为,若expr1为ture,则value=expr2,反之value=expr3。

    1. >>expr1 = 1;
    2. >>expr2 = 'expr1是真'
    3. >>expr3 = 'expr1是假'
    4. >>value = expr1?expr2:expr3
    5. >>print,value
    6. expr1是真
    1. >>expr1 = 0;
    2. >>expr2 = 'expr1是真'
    3. >>expr3 = 'expr1是假'
    4. >>value = expr1?expr2:expr3
    5. >>print,value
    6. expr1是假

    2. 逻辑运算符

            逻辑预算符包括:与(&&)、或(||)、非(~)。

    • :全真为真;
    • :有真为真;
    • :真即时假,假即时真。
    1. >>print,1&&2&&3
    2. 1
    3. >>print,1&&2&&0
    4. 0
    5. >>;注:负数表示真
    6. >>print,1&&-1
    7. 1
    1. >>print,0||2||0
    2. 1
    3. >>print,-1||-2||1
    4. 1
    1. >>print,~2
    2. 0
    3. >>print,~(-1)
    4. 0
    5. >>print,~(0)
    6. 1

    3. 位运算符

            位运算符是针对“位”来计算的,是需要将两个数转化为二进制,位数一一对应进行位加符“AND”、位取反符“NOT”、位或符“OR”、位异或符“XOR”。不懂原理的可以参考这个博客

    3.1 位加AND

            有的书称呼这个为位与,相当于与“&&”相比,只不过这个是针对位计算,或则说是需要转化为二进制来进行处理。例如:3和7位于,其中3转化为2进制数为0011,7对应的二进制数为0111,二者对应位上的数进行位加(与运算),得到0011,这个数转化为十进制数为3,因此结果为3。

    1. >>print,3 && 7
    2. 1
    3. >>print,3 And 7
    4. 3

    3.2 位或符

            机理与位加AND一样。例如:10和7进行位或计算,10对应的二进制数为1010,7对应的二进制数为0111,对应位进行或运算,得到1111,转化为十进制数为15,因此结果为15。

    1. >>print,10 OR 7
    2. 15

    3.3 位取反符

            机理与位加AND一样,例如:对2进行位取反,1对应的二进制数为0000,每位数进行取反,得到1110,由于最高位为符号位(符号位0表示正,1表示负),复数在计算机中使用补码来表示,补码“110”对应的值按照“取反加1”得到1010,因此结果为-2《IDL程序设计——数据可视化与ENVI二次开发》。

    1. >>print, Not 1
    2. -2

    3.4 位异或符

            异或可以表示成。

    A XOr B = (Not A Or B) And (A OR Not B)

    位异或是指在“位”上进行异或操作。

    1. >>print,3 Xor 7
    2. 4

    4. 关系运算符

            关系运算符有:大于GT、大于等于GE、等于EQ、小于等于LE、小于LT。

    大于来自英文单词Great,等于来自单词Equal、小于来自单词Less

    1. >>print,3 GE 7
    2. 0

     注:在IDL中,“>”表示去大运算,“<”表示去小运算。这个不是大于、小于!!!

    1. >>print,3 > 7 ; 取大
    2. 7

    5. 数字运算符

            数字运算符有加+、减-、乘*、除/、取大>、取小<、取余Mod。

    1. >>print,13 Mod 7
    2. 6
    3. >>print,3 > 7
    4. 7
    5. >>print,3 < 7
    6. 3

    6. 矩阵运算符

            在matlab中,矩阵的运算和采用的是数字运算符的方式进行运算的,然而IDL中有很大的区别。

    6.1 矩阵数字运算符

            矩阵中“+”、“-”、“*”和“/”表示对应位置的元素进行计算。注,矩阵对应元素相除时,二者维度必须一致。

    1. A = [[1,2,3],[4,5,6]]
    2. >>A
    3. 1 2 3
    4. 4 5 6
    5. >>B = Indgen(2,3)
    6. >>B
    7. 0 1
    8. 2 3
    9. 4 5
    10. >>C = A*B
    11. >>C
    12. 0 2 6
    13. 12 20 30
    14. >>D = A *A
    15. >>D
    16. 1 4 9
    17. 16 25 36
    18. >>E = A /A
    19. >>E
    20. 1 1 1
    21. 1 1 1
    22. >>F = A /B
    23. % Program caused arithmetic error: Integer
    24. divide by 0
    25. >>G
    26. 1 3 5
    27. 7 9 11

            注:若矩阵+一个常数,则表示举证中的每个元素都加上这个常数;若矩阵*或/一个常数,则表示举证中的每个元素都*或/这个常数。 

    1. >>H = A+1
    2. >>H
    3. 2 3 4
    4. 5 6 7

    6.2 矩阵相乘

            线性方程中的矩阵相乘(矩阵乘积,行乘以列)用“##”表示,即一个3×2(3行2列)的矩阵乘以2×3(2列3行)的矩阵,得到3×3的矩阵。

    1. >>A = [[1,2,3],[4,5,6]]-5
    2. >>A
    3. -4 -3 -2
    4. -1 0 1
    5. >>B = Indgen(2,3)+1
    6. >>B
    7. 1 2
    8. 3 4
    9. 5 6
    10. >>C = B ##A
    11. >>C
    12. -6 -3 0
    13. -16 -9 -2
    14. -26 -15 -4

    注:IDL中还有一个“#”运算符,表示(列乘以行),A#B相当于B##A

    1. >>D = A#B
    2. >>D
    3. -6 -3 0
    4. -16 -9 -2
    5. -26 -15 -4

    7. 括号运算符

            括号运算符有小括号“()”,也称之为圆括号,以及中括号“[]”,也称之为方括号。其中“[]”是用来表示矩阵的。注:没有大括号。

    1. >>Print,(3+4)*5
    2. 35

    不足之处,敬请斧正!

    转载请说明出处

    路漫漫其修远兮,吾将上下而求索。

     

  • 相关阅读:
    追求极致性能!Qwik 1.0版本发布
    69. Sqrt(x)x 的平方根
    prompt learning受控文本生成作诗
    【opencv】计算机视觉:停车场车位实时识别
    PostgreSQL企业应用——Rust三剑客(pgx)
    Groovy安装开发环境
    electron录制工具-desktopCapturer录屏
    Android通过BluetoothDevice获取蓝牙地址
    长期主义,vivo的“逆周期”生长之道
    iOS pod repo push 报错 ld: file not found: libarclite_iphoneos.a 问题解决方案
  • 原文地址:https://blog.csdn.net/weixin_41649786/article/details/126856216