TSL语言基础 > 矩阵计算 > FMArray > 用法介绍 > 子矩阵的提取与赋值

子矩阵提取    

  • 以下均假设A是一个矩阵。
    数组取数是使用[]运算符,FMArray矩阵也如此。
    例如A[2,3]表示行下标为2列下标为3的值。相对于其它方式,有降维效果。

    N:M的方式可以取矩阵的下标连续的子集。


    例如A[2:5]表示取A矩阵行下标为2到5之间的子矩阵。


    A[2:5][0:1]表示取A矩阵行下标为2到5之间,列下标为0到1之间的子矩阵。


    多维矩阵依此类推。
      
    当该维度需要取所有下标时,可以用:来表示全部,比如A[:][0:1]表示取所有行,而列为0到1之间的子矩阵。

    Array(N,M,…)的方式可以取矩阵任意下标集合的子集。


    例如A[array(2,5,6)]表示取A矩阵中行下标为2、5、6的三行组成的矩阵。



    A[array(2,5,6), array(0,2)] 表示取A矩阵中行下标为2、5、6,列下标为0和2的新矩阵。

    以上几种方式可以混搭灵活使用,能满足各类子矩阵提取的需求。
    例如:fm:=mrand(3,4,5);
       fm[:,0,:]为固定维度1下标为0的二维矩阵
       fm[:,array(2,3),:] 用数组做下标取多个下标
       fm[:,2:3,:] 用fromindex:toindex模式取多个下标