[Numpy-discussion] Faster way to generate a rotation matrix?
Tue Mar 3 19:15:12 CST 2009
sorry, i meant you're making 12 calls, not 16...
On Tue, Mar 3, 2009 at 8:14 PM, Chris Colbert <firstname.lastname@example.org> wrote:
> In addition to what Robert said, you also only need to calculate six
> cx = cos(tx)
> sx = sin(tx)
> cy = cos(ty)
> sy = sin(ty)
> cz = cos(tz)
> sz = sin(tz)
> you, are making sixteen transcendental calls in your loop each time.
> I can also recommend Chapter 2 of Introduction to Robotics: Mechanics and
> Controls by John J. Craig for more on more efficient transformations.
> On Tue, Mar 3, 2009 at 7:19 PM, Robert Kern <email@example.com> wrote:
>> On Tue, Mar 3, 2009 at 17:53, Jonathan Taylor
>> <firstname.lastname@example.org> wrote:
>> > Sorry.. obviously having some copy and paste trouble here. The
>> > message should be as follows:
>> > Hi,
>> > I am doing optimization on a vector of rotation angles tx,ty and tz
>> > using scipy.optimize.fmin. Unfortunately the function that I am
>> > optimizing needs the rotation matrix corresponding to this vector so
>> > it is getting constructed once for each iteration with new values.
>> > >From profiling I can see that the function I am using to construct
>> > this rotation matrix is a bottleneck. I am currently using:
>> > def rotation(theta):
>> > tx,ty,tz = theta
>> > Rx = np.array([[1,0,0], [0, cos(tx), -sin(tx)], [0, sin(tx),
>> > Ry = np.array([[cos(ty), 0, -sin(ty)], [0, 1, 0], [sin(ty), 0,
>> > Rz = np.array([[cos(tz), -sin(tz), 0], [sin(tz), cos(tz), 0],
>> > return np.dot(Rx, np.dot(Ry, Rz))
>> > Is there a faster way to do this? Perhaps I can do this faster with a
>> > small cython module, but this might be overkill?
>> You could look up to the full form of the rotation matrix in terms of
>> the angles, or use sympy to do the same. The latter might be more
>> convenient given that the reference you find might be using a
>> different convention for the angles. James Diebel's "Representing
>> Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors" is a
>> nice, comprehensive reference for such formulae.
>> Robert Kern
>> "I have come to believe that the whole world is an enigma, a harmless
>> enigma that is made terrible by our own mad attempt to interpret it as
>> though it had an underlying truth."
>> -- Umberto Eco
>> Numpy-discussion mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion