comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » [Fwd: tensor multiplication]
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
[Fwd: tensor multiplication] [message #20161] Thu, 18 May 2000 00:00
Paul van Delst is currently offline  Paul van Delst
Messages: 364
Registered: March 1997
Senior Member
A reply I got from William Thompson that allows tensor mult. in a real
compact form.

William Thompson wrote:
>
> In comp.lang.idl-pvwave you write:
>
>> Daniel Luebbert wrote:
>>>
>>> Hi,
>>>
>>> does anybody out there know an efficient and elegant way (i.e., without
>>> for-loops)
>>> to implement a tensor multiplication in IDL?
>>>
>>> What I mean is this:
>>> IDL can do a matrix multiplication, e.g. if I do
>>> c = indgen(3,4)
>>> d = indgen(4)
>>> then for
>>> help, c#d
>>> I get
>>> LONG ARRAY[3],
>>> and that's what I expect.
>>>
>>> But now, when I take one more dimension, like
>>> c = indgen(2,3,4)
>>> d = indgen(4)
>>> then
>>> help, c#d
>>> gives an error! (incompatible matrix dimensions...).
>>> What a would like to get is obviously an
>>> ARRAY[2,3]
>>>
>>> Does anybody know how?
>

<...my initial reply snipped...>

>
> I just sent a reply by mail to Daniel, suggesting
>
> result = reform( reform(c,6,4) # d, 2, 3)

Cool huh? I figured something like this could be done but my knowledge
of how you can manipulate matrices and still get the same answer isn't
too hot.

>
> Unfortunately, it appears that we still can't post messages to the outside
> world.
>
>> p.s. Can someone explain to me the utility/need for having both the #
>> *and* ## operator? I understand their operation but why both?
>> Convenience? Performance?
>
> I think the answer is more along the lines "historical" and "compromise".
>
> Older versions of IDL only had the # operator, and was described as the matrix
> multiplication operator. Somewhere along the line in the not too distant
> past--I think it was version 4.0--somebody decided to add in the ## operator,
> and the newer documentation says that this is the proper matrix multiplication,
> not the older #. I think this had something to do with the incorporation of
> some linear algebra routines from Numerical Recipes. I also think it may have
> come in part from a desire to make IDL more C-like--originally, IDL was
> modelled after FORTRAN.
>
> William Thompson

--
Paul van Delst Ph: (301) 763-8000 x7274
CIMSS @ NOAA/NCEP Fax: (301) 763-8545
Rm.202, 5200 Auth Rd. Email: pvandelst@ncep.noaa.gov
Camp Springs MD 20746
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: directing control after program interruption
Next Topic: INTERPOLATE

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 06:00:48 PDT 2025

Total time taken to generate the page: 1.04121 seconds