TSL语言基础 > 矩阵计算 > FMArray > 用法介绍 > 矩阵查找与遍历 > 查找与遍历举例

Mfind应用举例    

  • //数据样本
      f1:=fmarray[1,2,0,4,5]; //一维
      f2:=fmarray[[1.1,-2.0],[0.0,8.5]];//2*2

    //MFind(t)返回单元格中为真的项的下标,二维数组,一行存放一个值的下标
      mf1:= MFind(f1); //返回array((0),(1),(3),(4))
      mf2:= MFind(f2); //返回array((0,0),(0,1),(1,1))
      
    //MFind(t,exp)返回单元格中符合条件的项的下标
      mf3:=MFind(f1,mcell>=2);//返回array((1),(3),(4))
      mf4:=MFind(f2,mcell>=2);//array((1,1))
      
    //MFind(t,exp,RetV)返回符合条件的下标和值,二维数组,最后一列是单元值,前面的是下标
      mf5:=MFind(f1,mcell>=2,1);//array((1,2),(3,4),(4,5))
      mf6:=MFind(f2,mcell>=2,1);//array((1,1,8.5))
    //MFind(t,exp,RetV,v); 替换符合条件的值,并返回,返回结果同MFind(t,exp,RetV)
      mf7:=MFind(f1,mcell>=2,1,100);//将值大于等于2的单元格赋值为100
    mf8:=MFind(f2,mcell>=2,0,100.);// 将值大于等于2的单元格赋值为100.
    //此时f1,f2的结果分别为:
     

    //多维数组同样也支持,用法一样,此处只挑一种用法进行举例
      f3:=fmarray[[[1,1],[2,0]],[[1,2],[0,-3]],[[3,8],[-8,10]]];
    mf:= MFind(f3,Mcell<0,1,0);//将多维矩阵中小于0的值用0替代,并返回符合条件的下标与原值
    //此时,f3的值为fmarray[[[1,1],[2,0]],[[1,2],[0,0]],[[3,8],[0,10]]]
    return mf;

    返回mf如下: