/* matblock.mac */ /* (C) Kenrou Adachi , 2004/2/25 */ /* version 0.1 */ matblock(Mat,i1,i2,j1,j2) := block([_A, _m, _n, _i, _j], _m : i2 - i1, _n : j2 - j1, _A : zeromatrix(_m + 1, _n + 1), for _i : 1 thru _m + 1 do for _j : 1 thru _n + 1 do _A[_i][_j] : Mat[i1 + _i - 1][j1 + _j - 1], _A )$ matreplace(Mat1,Mat2,i1,i2,j1,j2) := block([_A, _m, _n, _i, _j], _m : i2 - i1, _n : j2 - j1, _A : copymatrix(Mat1), for _i : 1 thru _m + 1 do for _j : 1 thru _n + 1 do _A[i1 + _i - 1][j1 + _j - 1] : Mat2[_i][_j], _A )$ /* examples */ /* (C1) A : matrix([q,w,e,r,t],[y,u,i,o,p],[a,s,d,f,g],[h,j,k,l,z],[x,c,v,b,n]); [ q w e r t ] [ ] [ y u i o p ] [ ] (D1) [ a s d f g ] [ ] [ h j k l z ] [ ] [ x c v b n ] (C2) load("./matblock.mac"); (D2) ./matblock.mac (C3) matblock(A, 2,4,2,4); [ u i o ] [ ] (D3) [ s d f ] [ ] [ j k l ] (C4) matblock(A, 2,2,2,2); (D4) [ u ] (C5) matblock(A,2,5,3,4); [ i o ] [ ] [ d f ] (D5) [ ] [ k l ] [ ] [ v b ] (C6) B : matrix([1,2,3],[4,5,6],[7,8,9]); [ 1 2 3 ] [ ] (D6) [ 4 5 6 ] [ ] [ 7 8 9 ] (C7) B : matrix([1,2],[3,4]); [ 1 2 ] (D7) [ ] [ 3 4 ] (C8) matreplace(A,B,1,2,1,2); [ 1 2 e r t ] [ ] [ 3 4 i o p ] [ ] (D8) [ a s d f g ] [ ] [ h j k l z ] [ ] [ x c v b n ] (C9) C : matrix([1,2,3],[4,5,6],[7,8,9]); [ 1 2 3 ] [ ] (D9) [ 4 5 6 ] [ ] [ 7 8 9 ] (C10) matreplace(A,C,2,4,2,4); [ q w e r t ] [ ] [ y 1 2 3 p ] [ ] (D10) [ a 4 5 6 g ] [ ] [ h 7 8 9 z ] [ ] [ x c v b n ] */ /* end of matblock.mac */