[Numpy-discussion] help with translating some matlab

Warren Weckesser warren.weckesser at enthought.com
Fri Feb 18 14:23:20 EST 2011


On Fri, Feb 18, 2011 at 12:50 PM, Neal Becker <ndbecker2 at gmail.com> wrote:

> Neal Becker wrote:
>
> > My translation is:
> >
> >     x1 = rcv[n:n-N:-1]
> >
> >     z = np.dot (P, x1.conj().transpose())
> >
> >     g = z / (_lambda + np.dot (x1, z))
> >
> >     y = np.dot (h, x1.conj().transpose())
> >
> >     e = x[n-N/2] - y
> >
> >     h += np.dot (e, g.conj().transpose())
> >
> >     P = (P - np.dot (g, z.conj().transpose()))/_lambda
> >
> > But it doesn't work.
> >
> > You say z should be a column vector.  I got:
> > In [138]: x1.shape
> > Out[138]: (64,)
> >
> > In [139]: z.shape
> > Out[139]: (64,)
> >
> > Clearly, I did something wrong here.
>
> I think I've got it.  In numpy, a 'vector' is a row vector.  If I want to
> turn a
> row vector into a column vector, transpose doesn't work.  I need to use
> newaxis
> for that.  So the whole translation is:
>
>    x1 = rcv[n:n-N:-1]
>
>     z = np.dot (P, x1.conj()[:,np.newaxis])
>
>    g = z / (_lambda + np.dot (x1, z))
>
>     y = np.dot (h, x1.conj()[:,np.newaxis])
>
>    e = x[n] - y
>
>    h += np.dot (e, g.conj().transpose())
>
>    P = (P - np.dot (g, z.conj().transpose()))/_lambda
>
>

Sure, you can implement Matlab's row and column vectors that way.  I would
probably stick with true 1D arrays (rather than Nx1 2D arrays), and
implement those lines something like this:

x1 = rcv[n:n-N:-1]

z = np.dot(P, x1.conj())

g = z / (_lambda + np.dot(x1, z))

y = np.vdot(x1, h)

e = x[n] - y

# Note: e is a scalar.
h += e * g.conj()

P = (P - np.outer(g, z.conj()))/_lambda


Note the use of vdot(); vdot(a,b) conjugates a and then dots with b.  Also
note the use of outer() in the line that updates P.

Warren



> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110218/96eb8d29/attachment.html>


More information about the NumPy-Discussion mailing list