知识库 > 矩阵专题

矩阵查找和遍历    

  • 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获得列下标

    Stks:=Array(“SZ000001”,”SZ000002”);
    Times:=Array(“2008-12-31”,”2007-12-31”,”2006-12-31”);
    A:=Nils(Stks,Times); //生成列下标为时间字符串,行下标为股票的空矩阵。
    A::Begin
    SetSysParam(pn_Stock(),MRow);
      T:=StrToDate(MCol);
      if FirstDay()>T then continue;
      MCell:=SpecDate(Close(),T);
    end;

    ::实现一次Stks与Times的笛卡尔积的遍历,判断了是否已经上市,如果未上市则保持为NIL值,否则利用MCell来赋值为收盘价。

    A:=Array((1,-2,3),(2,-0.5,-1));
    A::=abs(MCell);

    A的结果为Array((1,2,3),(2,0.5,1));
    ::=的工作原理是,遍历矩阵,对右表达式进行计算,计算结果设置给矩阵的对应项。