TSL语言基础 > 矩阵计算 > FMArray > 用法介绍

矩阵大小    

  • 已有的矩阵大小运算的相关函数也支持fmarray数据类型。具体函数说明可参考各函数的帮助文档。
    如常见的:
    Length返回第一维的长度
    Msize返回所有维度的大小或者下标
    Mrows返回第一维的长度或者全部下标
    Mcols返回第二维的长度或者全部下标
    SetLength重新设定矩阵的行数
    注意:Msize在fmarray的行为和array类型有所不同,array类型的数据msize仅仅处理最多两维,而fmarray类型是全部维度。

    功能展示如下:
      f1:=fmarray[1,2,3,8]; //一维,4行
      f2:=fmarray[[1.1,2.0],[3.0,8.5]];//2*2
      f3:=fmarray[[[1,1],[2,2]],[[1,2],[3,-3]],[[3,8],[-8,-10]]]; //3*2*2

    //-Length返回整数,第一维度的长度
      lenf1:=length(f1);//返回4
      lenf2:=length(f2);//返回2
      lenf3:=length(f3); //返回3

    //-msize(t) 返回一维数组,每个维度的长度
      ms1:=msize(f1);//返回array(4)
      ms2:=msize(f2);//返回array(2,2)
      ms3:=msize(f3);//返回array(3,2,2)
    //-msize(t,1) 返回二维数组,每个维度的下标集合,第一行记录第一维,第二行记录第二维,依此类推
      ms11:=msize(f1,1);//返回array((0,1,2,3))
      ms21:=msize(f2,1);//返回array((0,1),(0,1))
      ms31:=msize(f3,1);//返回array((0,1,2),(0,1),(0,1))

    //-mrows(t) 功能同length
      mr1:=mrows(f1);//返回4
      mr2:=mrows(f2);//返回2
      mr3:=mrows(f3);//返回3
    //-mrows(t,1) 返回一维数组,第一维度的下标集合
      mr11:=mrows(f1,1);//返回array(0,1,2,3)
      mr21:=mrows(f2,1);//返回array(0,1)
      mr31:=mrows(f3,1);//返回array(0,1,2)
     
    //-mcols(t) 返回整数,返回第二维的长度
      mc1:=mcols(f1);//返回0,一维数组没有第二维度
      mc2:=mcols(f2);//返回2
      mc3:=mcols(f3);//返回2
    //-mcols(t,1) 返回一维数组,第二维度的下标集合
      mc11:=mcols(f1,1);//返回array(),一维数组没有第二维度
      mc21:=mcols(f2,1);//返回array(0,1)
      mc31:=mcols(f3,1);//返回array(0,1)

    // SetLength-重置矩阵的行数
    f1:=Minit(3,5,1); //3*5,值为1的矩阵
     
    SetLength(f1,10);//重新设置f1的行数为10
     
    return f1; //大小变更为10*4,扩大的地方用0补充
    返回:10*4矩阵。



    除此之外,还有Getintindexs,getstrindexs,getallindexs等获取数组下标的模型也支持FMArray,
    但由于FMArray下标是从0开始的顺序下标,不存在自定义或字符串的下标,所以其中getstrindexs是没必要使用,而Getintindexs、getallindexs功能与msize等存在重合,因此,对于fmarray而言只需用msize来获得全部维度和维度的大小信息。