TSL语言基础 > 矩阵计算 > 矩阵查找和遍历的保留字和算符 > MFind

MFind矩阵查找    

  •   MFind可以查找矩阵中的符合条件的行列以及值。
      例如,我们在一个随机矩阵中寻找值大于0.9的值所处在的位置:
      A:=Rand(10,10);
      B:=MFind(A,MCell>0.9);
      B的返回结果为一个二维数组,第0列为符合条件的行号,第1列为符合条件的列号。
      如果我们除了要返回行列号,还需要返回符合条件的结果,则用MFind(A,MCell>0.9,True)即可,这样第2列为符合条件的值。
      在查找的时候,第二个参数为一个条件表达式,我们可以利用MCell获得值,也可以利用MRow获得行下标,MCol获得列下标,所以我们也可以做出复杂的查询。
      复杂应用案例:
      例如:
      A为矩阵,内容为股票的最近N日的日期,我们假定我们的范例中的股票均已上市N日以上。
      N:=100;//一百个交易日
      A:=Zeros(N,array("SZ000001","SZ000002")); //得到一个N行两列的0矩阵,列名为股票代码
       Cols:=MCols(A,1);
       for j:=0 to length(Cols)-1 do //初始化时间数组
       begin
        SetSysParam(pn_stock(),Cols[j]);
        SetSysParam(pn_date(),now());
        A[:,j:j]:=`NDay3(N,sp_time()); //给第J列赋值为时间
       end;
       B:=MFind(A,Spec(SpecDate(Close()>Ref(Close(),1)*1.02,MCell),MCol),1); //MCell为时间,MCol为股票代码
       return B;
      返回的B的结果为股票涨幅大于2%的股票和时间。