TSL语言基础 > 矩阵计算 > 矩阵运算

基础算符对矩阵计算的支持    

  • 运算符运算运算对象结果类型
    +实数+数组
    数组+数组
    一维数组+二维数组
    实数与数组每个单元格值相加
    两个数组对应单元格的值相加
    一维数组与二维数组每列对应单元格值相加
    -同加法同加法
    *同加法同加法
    /右除同加法同加法
    \左除同加法同加法
    %,mod取余同加法同加法
    div除取整同加法同加法
    ^乘方同加法同加法
    ~求对数同加法同加法
    .=等于同加法同加法
    .>大于同加法同加法
    .<小于同加法同加法
    .<>不等于同加法同加法
    .>=大于等于同加法同加法
    .<=小于等于同加法同加法
    .&位与同加法同加法
    .|位或同加法同加法
    .!位非.!数组数组每个单元格值求位非
    .^位异或同加法同加法
    shl位左移同加法同加法
    rol位循环左移同加法同加法
    shr位右移同加法同加法
    ror位循环右移同加法同加法
    .&&逻辑与同加法同加法
    .||逻辑或同加法同加法
    .!!逻辑非.!!数组数组每个单元格值求是否为真
    like模式匹配判断同加法同加法
    ++加1数组++/++数组数组每个单元格值+1
    --减1数组--/--数组数组每个单元格值-1

    范例:
    范例1
     //实数与数组相加
      num:=5;
      arr:=array(1,2,3,4,5);
      return num+arr; 
     //返回:array(6,7,8,9,10)

    范例2
     //数组与数组相加
      arr1:=array(1,2,3,4,5);
      arr2:=array(6,7,8,9,10);
      return arr1+arr2; 
     //返回:array(7,9,11,13,15)

    范例3
     //一维数组与二维数组相加
      arr1:=array(1,2,3,4,5);
      arr2:=ones(5,array("a","b","c"));;
      return arr1+arr2;

     //结果:
     
    范例4
     //数组自增1
      arr:=array(1,2,3,4,5);
      return ++arr;
     //返回:array(2,3,4,5,6)
  •   TSL的基础算符+,-,*,/,\,%,mod,div,^,~,.=,.>,.<,.<>,.>=,.<=,.!,.&,.|,.^,.||,.&&,.!!,like,++,--都支持矩阵(数组)的计算,可以支持简单类型和矩阵进行计算,也支持矩阵和矩阵一起进行计算。和其他的支持矩阵计算的语言不同,TSL的基础的算符对矩阵计算依旧是原来基础算符的含义,例如矩阵和矩阵用*来计算,是每个相应单元格之间相乘。基础算符的运算既支持二维数组(矩阵),也支持一维数组或者其他维度的数组。
      例子1:矩阵和简单类型的计算。
        A:=array(1,2,3);
        A:=A+1;//该写法也可以写成 A+=1;

      结果A是array(2,3,4)也就是每个单元格都加1。
        A:=Ones(10,10);//初始化一个全1的10*10矩阵。
        A:=A*3;
      结果A是一个10*10的全3矩阵。
      例子2:矩阵和矩阵的计算
        A:=array(1,2,3);
        B:=array(2,3,4);
        A:=A*B; //也可以写成A*=B;
      结果A是array(2,6,12)
        A:=Eye(10,10);
        B:=Ones(10,10);
        A:=A+B;
      结果A是对角线为全2其他为全1的矩阵。
      目前,矩阵和矩阵以及矩阵和简单类型的计算支持所有常用的基础算符有+,-,*,/,\,mod,div,^,~等简单算符。