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

矩阵连接    

  • Fmarray支持矩阵连接运算:
    Union,|,:|的矩阵连接算符都支持

    Union与union2的区别在于,union没有去重功能,就是把两个表的行连接起来。
    连接运算支持和array的混合运算
    计算的结果类型和左值相同
    如果值为fmarray,fmarray的单元格类型是能包容左右操作数单元格的类型
    例如整数矩阵和浮点矩阵的操作是浮点矩阵
    注意点:由于fmarray属于固定列数的,在union的时候,如果右操作数的列多于左边,将会出错。
    对于|,:|而言,如果右操作数行数少于左边,可以支持,少的行补0,如果行数大于左边,则等于先将矩阵扩大再操作
    由于fmarray属于完全矩阵,因而|,:|在操作的时候,当右操作数行数超过左边,两者的表现完全一致。这一点和array不同,因为array的本身行原本所具备的列数是不确定的,所以:|补齐列,而|不补齐。对于fmarray而言,列数是固定的,所以在这种行数不同的时候两者会具有一定的差异。

    与Array的混合运算的表现与集合运算的表现一样,这里就不再重复举例,可参考上一章节的案例。这里就|与:|操作时,左右行数不一样的表现进行举例,如下:
    例1:矩阵行列相同时做|操作
    t1:=fmarray[[1,2],[3,4],[5,5]];
      t2:=fmarray[[3,4],[7,8],[6,9]];
      t:= t1 |t2;

    return t;

    返回:(将两个表的列连接起来)


    例2:左右两表行数不一致时的连接表现
    t1:=fmarray[[1,2],[3,4],[5,5]];
    t2:=fmarray[[3,4]];

    则左表行数超过右表时,即return t1|t2; 返回表现如下:右表少的地方用0补足

    若右表行数超过左表时,即return t2|t1;返回如下:是左表先自扩张同右表一致,而后进行拼接

    同时,将上列中的|变更为:|效果也一样,在FMArray中,两者功能无区别。