I am trying to set up state space representation of a system using signal.lti. The system has no feedforward so D = 0. I&#39;ve tried the three options listed in the code below to represent D.<br><br>The only way I can get it to work is option 2 if C has 1 row. If C has more than 1 row it won&#39;t work. <br>
<br>Any thoughts?<br>-Bill<br><br>Code<br>---------------------------------------------------------------<br>from numpy import ones,matrix<br>from scipy import signal<br>r = ones(3)<br>A = matrix([r,r,r])<br>B = matrix([r]).T<br>
C = matrix([r,r])<br><br>#three options of D to make it 0<br>#1) D=0<br>#2) D = matrix([0,0]).T<br>#3) D = None<br><br>D = 0<br>#D = None<br>#D = matrix([0,0]).T<br><br>Gss = signal.lti(A,B,C,D)<br>-----------------------------------------------------------<br>
<br>Tracebacks<br>-----------------------------------------------------------<br>Option 1<br>/usr/lib/python2.5/site-packages/scipy/signal/ltisys.py in abcd_normalize(A, B, C, D)<br>&nbsp;&nbsp;&nbsp; 101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise ValueError, &quot;A and C must have the same number of columns.&quot;<br>
&nbsp;&nbsp;&nbsp; 102&nbsp;&nbsp;&nbsp;&nbsp; if MD != MC:<br>--&gt; 103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise ValueError, &quot;C and D must have the same number of rows.&quot;<br>&nbsp;&nbsp;&nbsp; 104&nbsp;&nbsp;&nbsp;&nbsp; if ND != NB:<br>&nbsp;&nbsp;&nbsp; 105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise ValueError, &quot;B and D must have the same number of columns.&quot;<br>
<br>&lt;type &#39;exceptions.ValueError&#39;&gt;: C and D must have the same number of rows.<br>WARNING: Failure executing file: &lt;testlti.py&gt;<br><br>Option 2 (with C as two rows...if C is a single row I do not get this traceback)<br>
/usr/lib/python2.5/site-packages/scipy/signal/ltisys.py in ss2tf(A, B, C, D, input)<br>&nbsp;&nbsp;&nbsp; 147 <br>&nbsp;&nbsp;&nbsp; 148&nbsp;&nbsp;&nbsp;&nbsp; num_states = A.shape[0]<br>--&gt; 149&nbsp;&nbsp;&nbsp;&nbsp; type_test = A[:,0] + B[:,0] + C[0,:] + D<br>&nbsp;&nbsp;&nbsp; 150&nbsp;&nbsp;&nbsp;&nbsp; num = numpy.zeros((nout, num_states+1), type_test.dtype)<br>
&nbsp;&nbsp;&nbsp; 151&nbsp;&nbsp;&nbsp;&nbsp; for k in range(nout):<br><br>&lt;type &#39;exceptions.ValueError&#39;&gt;: shape mismatch: objects cannot be broadcast to a single shape<br>WARNING: Failure executing file: &lt;testlti.py&gt;<br><br>Option 3<br>
same as 1<br><br>