Re: [eigen] Vectorwise dot product feature request |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Vectorwise dot product feature request
- From: Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>
- Date: Wed, 7 Jul 2010 16:29:34 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=XY118akeVgqXarJj7f6qxlO9+3j8n0dhzQWAbCLEtZU=; b=Ehj9tDezIx4RQMb6Tf7IqWbFvPj8iGNkPiK3G1IRSxjWqHCd5hdiCvaGC20/3IRBQh h9KUPAWtBEN5P7TpVxLKMfgVSXEiMkyULQ9GWzfpy+iVkahI1sBFtJG2Wv/oDmMX3Ho0 QVql0yXEhgc+fsbOd22fd5y8AcN8QfgGF3rJA=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=D8d91Tec1AS8GaSSGeHQMG45xZSVjtVCWJSvU5iQcoEnvMSmdSvvK92OubpXwRmkii FRaW5GNJyR1tzfEJo20lTeKDeH79ae9XWp1vcj5ufMgUuGmtp65NtiuoHoTexIUzRw/w ni/ko1Wigd3s6WauBE5SNiJNgmQ0gr1YZWxdg=
It is already possible. You can choose one of the following methods:
mat.array() *= Replicate<Vector2d,1,Dynamic>(vec,1,mat.cols()).array();
mat.array() *= vec.replicate(1,mat.cols()).array();
Here, they have probably the same performance.
- Hauke
On Wed, Jul 7, 2010 at 4:22 PM, Johan Pauwels
<johan.pauwels@xxxxxxxxxxxxx> wrote:
> On 2010-07-07 15:40, Gael Guennebaud wrote:
>>
>> actually, this is more subtle :) When an inner product is detected, it
>> returns an InnerProduct object which can be converted into a scalar
>> type:
>>
>
> Interesting explanation, thanks.
>
> I have another vectorwise question/request. I'd like to broadcast a
> coefficient-wise product like "mat.array().colwise() *= vec.array()". Is it
> possible to do this now? Or will it be in the future?
>
> Kind regards,
> Johan
>>
>>
>> On Wed, Jul 7, 2010 at 2:46 PM, Márton Danóczy<marton78@xxxxxxxxx> wrote:
>>
>>>
>>> Because .dot() returns a scalar, whereas multiplication returns an 1x1
>>> matrix.
>>>
>>> Marton
>>>
>>>
>>>
>>> On 7 July 2010 14:15, Johan Pauwels<johan.pauwels@xxxxxxxxxxxxx> wrote:
>>>
>>>>
>>>> On 2010-07-07 13:02, Aron Ahmadia wrote:
>>>>
>>>> That looks suspiciously like a transposed multiply to me...
>>>>
>>>> Ugh, exactly. Sorry for the bother. My mind was so set on a collection
>>>> of
>>>> independent columns and broadcasting operations, that I forgot the basic
>>>> matrix multiplication. One might wonder why there even is a .dot()
>>>> syntax?
>>>>
>>>> Regards,
>>>> Johan
>>>>
>>>> A
>>>>
>>>> On Wed, Jul 7, 2010 at 1:59 PM, Johan
>>>> Pauwels<johan.pauwels@xxxxxxxxxxxxx>
>>>> wrote:
>>>>
>>>>>
>>>>> Hello all,
>>>>>
>>>>> Would it be possible to allow a vectorwise dot product as in the
>>>>> example
>>>>> below?
>>>>>
>>>>> #include<Eigen/Core>
>>>>>
>>>>> int main()
>>>>> {
>>>>> Eigen::MatrixXf mat = Eigen::MatrixXf::Random(5,2);
>>>>> Eigen::VectorXf vec = Eigen::VectorXf::Random(5);
>>>>> Eigen::RowVectorXf result(2);
>>>>>
>>>>> // this syntax
>>>>> result = mat.colwise().dot(vec);
>>>>> // instead of this for loop
>>>>> for (int i = 0; i< mat.cols(); ++i)
>>>>> {
>>>>> result[i] = mat.col(i).dot(vec);
>>>>> }
>>>>> }
>>>>>
>>>>> Regards,
>>>>> Johan
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
>
>