TSL语言基础 > 数学与统计教程 > TSL矩阵操作

矩阵代码优化    

  •   对于二维数组的行操作快于列操作,例如求一个1000*1000的方阵各行的和与各列的和。
      X := Rand(1000,1000) ;   Sumr := array();
      Mtic ;
      For i := 0 to mrows(X)-1 do
      Sumr[i] := sum(X[i]);
      T1 := Mtoc;
      Mtic ;
      For i := 0 to mcols(X)-1 do
        Sumr[i] := sum(X[:,i]);
      T2 := mtoc;
      Return array(t1,t2);
      结果:array(0.147,0.3011)
      矩阵操作符的运算速度远远快于for循环,例如求矩阵的乘法。
      A := Rand(300,300);   B := Rand(300,300);
      Multi := array();
      Mtic ;
      For i := 0 to mrows(A)-1 do
        For j :=0 to mcols(B)-1 do
          Multi[i,j] := sum(a[i]*b[:,i]);
      T1 := Mtoc;
      Mtic ;
      Mult := A :* B;
      T2 := Mtoc;
      Return array(t1,t2);
      结果:array(9.3269,0.0173)
      从结果中可以看出,操作符的运算速度是循环的100倍。因为,操作符是c语言的代码,而且,在操作符优化了算法,算法复杂度也远远小于循环。