FAQ > 矩阵运算

Q:如何快速实现数组中满足大于某个数且小于某个数的那些行    

  • A:对于数字数组,一般实现建议:通过关系运算符判断出是否符合条件,即生成真假矩阵,然后再通过mfind查找出为真的单元的行列下标。

    目前TSL语言中,支持矩阵关系运算符.<>,.>,.<,.>=,.<=,.=,
    矩阵链式关系运算符 ::> ::< ::<> ::== ::>= ::<=

    示例1:当条件单一时,可使用普通关系运算符+mfind实现
    data:=rand(10,4);
    return mfind(data.<0.5);//返回结果为二维,每个符合条件的单元的行列信息
    //若对指定列筛选,如对列2则使用return mfind(data[:,2].<0.5)//返回结果为一维,即行标


    示例2:当存在多个条件时,可使用链式关系算符+mfind实现
    返回data数组中,列2中大于等于0.3且小于等于0.7的行
    data:=rand(10,4);
    cS:=2;//指定判断列
    lower:=0.3;
    upper:=0.7;
    t:= mfind(lower::<=data[:,cS]::<=upper);
    //等价于mfind((data[:,cS].<=upper).&& (data[:,cS].>=lower))
    return t;