#!/usr/bin/env python
# (C) 2000 Huaiyu Zhu <hzhu@users.sourceforge.net>. Licence: GPL
# $Id: test_block.py,v 1.6 2000/09/13 01:22:57 hzhu Exp $
"""
Test constructing block matrices for Matrix module
"""
from MatPy.Matrix import *
#------------------------------------------------------------------
print "-"*40, "Assemble block matrices"
print "For proper matrices"
a = ones((2,3))
b = [a*1, a*2, a*3]
print Matrix_c(b)
print Matrix_r(b)
print "For row vectors"
a = ones(3)
b = [a*1, a*2, a*3]
print Matrix_c(b)
print Matrix_r(b)
print "For col vectors"
a = ones(2).T
b = [a*1, a*2, a*3]
print Matrix_c(b)
print Matrix_r(b)
#------------------------------------------------------------------
print "For different shapes"
a = zeros((0,0))
b = ones(3)
c = ones((2,3))*2
print a, b, c
print Matrix_c((a, b, c))
print Matrix_r((a.T, b.T, c.T))
#------------------------------------------------------------------
print "-"*40, "Split into block matrices"
print "For proper matrices"
a = rand((2,3))
print len(rows(a)), rows(a)
print len(cols(a)), cols(a)
print "For row vectors"
a = rand(3)
print len(rows(a)), rows(a)
print len(cols(a)), cols(a)
print "For col vectors"
a = rand(2).T
print len(rows(a)), rows(a)
print len(cols(a)), cols(a)
#------------------------------------------------------------------
print "-"*40, "Split and assemble"
a = rand((2,3))
print a
b = rows(a)
print b
c = Matrix_c(b)
print c
assert norm(a - c) == 0
d = cols(a)
print d
e = Matrix_r(d)
print e
assert norm(a - e) == 0
Result obtained with
>>> from MatPy.tests import test_block
---------------------------------------- Assemble block matrices
For proper matrices
[ 1 1 1
1 1 1
2 2 2
2 2 2
3 3 3
3 3 3 ]
[ 1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3 ]
For row vectors
[ 1 1 1
2 2 2
3 3 3 ]
[ 1 1 1 2 2 2 3 3 3 ]
For col vectors
[ 1
1
2
2
3
3 ]
[ 1 2 3
1 2 3 ]
For different shapes
[ ] [ 1 1 1 ] [ 2 2 2
2 2 2 ]
[ 1 1 1
2 2 2
2 2 2 ]
[ 1 2 2
1 2 2
1 2 2 ]
---------------------------------------- Split into block matrices
For proper matrices
2 [[[ 0.829, 0.355, 0.802 ]], [[ 0.24 , 0.704, 0.917 ]]]
3 [[[ 0.829 ],
[ 0.24 ]], [[ 0.355 ],
[ 0.704 ]], [[ 0.802 ],
[ 0.917 ]]]
For row vectors
1 [[[ 0.596, 0.169, 0.664 ]]]
3 [[[ 0.596 ]], [[ 0.169 ]], [[ 0.664 ]]]
For col vectors
2 [[[ 0.63 ]], [[ 0.527 ]]]
1 [[[ 0.63 ],
[ 0.527 ]]]
---------------------------------------- Split and assemble
[ 0.528 0.829 0.289
0.611 0.525 0.862 ]
[[[ 0.528, 0.829, 0.289 ]], [[ 0.611, 0.525, 0.862 ]]]
[ 0.528 0.829 0.289
0.611 0.525 0.862 ]
[[[ 0.528 ],
[ 0.611 ]], [[ 0.829 ],
[ 0.525 ]], [[ 0.289 ],
[ 0.862 ]]]
[ 0.528 0.829 0.289
0.611 0.525 0.862 ]