Hi Lucy, The point of a block-matrix is that it is composed of smaller matrices that we keep as whole objects. If you want to flatten this to an explicit matrix you can use as_explicit:
In [6]: sym.BlockMatrix([[a], [phi], [theta]]).as_explicit() Out[6]: ⎡ 0 ⎤ ⎢ ⎥ ⎢ 0 ⎥ ⎢ ⎥ ⎢ 0 ⎥ ⎢ ⎥ ⎢φ₀₀⎥ ⎢ ⎥ ⎢φ₁₀⎥ ⎢ ⎥ ⎢φ₂₀⎥ ⎢ ⎥ ⎢θ₀₀⎥ ⎢ ⎥ ⎢θ₁₀⎥ ⎢ ⎥ ⎢θ₂₀⎥ ⎢ ⎥ ⎢θ₃₀⎥ ⎢ ⎥ ⎣θ₄₀⎦ Your calculations should come out correctly with or without flattening though e.g.: In [7]: A = MatrixSymbol('A', 2, 2) In [8]: B = MatrixSymbol('B', 2, 2) In [9]: A Out[9]: A In [10]: A.as_explicit() Out[10]: ⎡A₀₀ A₀₁⎤ ⎢ ⎥ ⎣A₁₀ A₁₁⎦ In [11]: A*B Out[11]: A⋅B In [12]: (A*B).as_explicit() Out[12]: ⎡A₀₀⋅B₀₀ + A₀₁⋅B₁₀ A₀₀⋅B₀₁ + A₀₁⋅B₁₁⎤ ⎢ ⎥ ⎣A₁₀⋅B₀₀ + A₁₁⋅B₁₀ A₁₀⋅B₀₁ + A₁₁⋅B₁₁⎦ In [13]: A.as_explicit() * B.as_explicit() Out[13]: ⎡A₀₀⋅B₀₀ + A₀₁⋅B₁₀ A₀₀⋅B₀₁ + A₀₁⋅B₁₁⎤ ⎢ ⎥ ⎣A₁₀⋅B₀₀ + A₁₁⋅B₁₀ A₁₀⋅B₀₁ + A₁₁⋅B₁₁⎦ -- Oscar On Wed, 19 Jun 2019 at 17:39, Lucy Jackson <lucy.jackson....@gmail.com> wrote: > > Hi Oscar, > > I am using version 1.3. > > The introduction of the extra [] brackets now makes the shape 11,1. However, > when the variable is viewed it is as follows: > > Matrix([ > [Matrix([ > [0], > [0], > [0]])], > [ phi], > [ theta]]) > > > What I really want is a single matrix with: > Matrix([[0] > [0] > [0] > phi[0,0] > phi[1,0] > phi[2,0] > theta[0.0] > theta[1,0] > theta[2,0] > theta[3,0] > theta[4,0] ]) > > Is this how sympy has stored it even though it does not display it like this? > > Thanks, > > Lucy > > On Wed, 19 Jun 2019 at 16:51, Oscar Benjamin <oscar.j.benja...@gmail.com> > wrote: >> >> Hi Lucy, >> >> Running on master I get this: >> >> In [13]: sym.BlockMatrix([[a], [phi], [theta]]) >> Out[13]: >> ⎡⎡0⎤⎤ >> ⎢⎢ ⎥⎥ >> ⎢⎢0⎥⎥ >> ⎢⎢ ⎥⎥ >> ⎢⎣0⎦⎥ >> ⎢ ⎥ >> ⎢ φ ⎥ >> ⎢ ⎥ >> ⎣ θ ⎦ >> >> In [14]: sym.BlockMatrix([[a], [phi], [theta]]).shape >> Out[14]: (11, 1) >> >> Note that I've used extra square brackets to indicate that I want >> these combined column-wise. Without those I get: >> >> In [11]: sym.BlockMatrix([a, phi, theta]) >> Out[11]: >> ⎡⎡0⎤ ⎤ >> ⎢⎢ ⎥ ⎥ >> ⎢⎢0⎥ φ θ⎥ >> ⎢⎢ ⎥ ⎥ >> ⎣⎣0⎦ ⎦ >> >> In [12]: sym.BlockMatrix([a, phi, theta]).shape >> Out[12]: (3, 3) >> >> It's unfortunate that the sizes aren't checked there since those are >> inconsistent. >> >> It looks like the main problem you're having is fixed in master. What >> version of SymPy are you using? >> >> >> -- >> Oscar >> >> On Wed, 19 Jun 2019 at 15:15, Lucy Jackson <lucy.jackson....@gmail.com> >> wrote: >> > >> > Hi, >> > >> > I am looking to concatenate three matrices (shown below) using >> > BlockMatrix, however, the output has the wrong dimensions. >> > >> > theta = sym.MatrixSymbol('theta', 5, 1) >> > phi = sym.MatrixSymbol('phi', 3, 1) >> > a = sym.Matrix([[0],[0],[0]]) >> > >> > X = sym.BlockMatrix([a, phi, theta]) >> > >> > With this code I get the following output: >> > >> > X = Matrix([ >> > >> > [ 0], >> > [ 0], >> > [ 0], >> > [ phi[0, 0]], >> > [theta[0, 0]]]) >> > >> > >> > However, I am expecting an output thats 11 x 1. I am also unable to check >> > the shape of X as X.shape yields the following error: >> > >> > >> > AttributeError: 'Zero' object has no attribute 'shape' >> > >> > >> > Any help would be greatly appreciated! >> > >> > >> > Many Thanks, >> > >> > >> > Lucy >> > >> > >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "sympy" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to sympy+unsubscr...@googlegroups.com. >> > To post to this group, send email to sympy@googlegroups.com. >> > Visit this group at https://groups.google.com/group/sympy. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/sympy/76c6868d-b014-4b87-a514-f60a574ad7bd%40googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sympy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sympy+unsubscr...@googlegroups.com. >> To post to this group, send email to sympy@googlegroups.com. >> Visit this group at https://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/CAHVvXxT3Tzw44EEt7JjbsKaBfNwNONBGNJ%2BbYEmjFuHFCrdgcw%40mail.gmail.com. >> For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAGwk1%3DdYaYQn53igxC2jn9j5TSyYT59rFvRaSh0synSkOZkeRA%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAHVvXxQhkrhQDAMq5PPP2TZJrNG2hiHzqMZ1ahTREARae4ufcA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.