Re: [eigen] Array cwise multiplication
• To: eigen@xxxxxxxxxxxxxxxxxxx
• Subject: Re: [eigen] Array cwise multiplication
• From: Carlos Becker <carlosbecker@xxxxxxxxx>
• Date: Wed, 29 Sep 2010 19:46:28 +0200
• Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=VGHIrJUvj5aOY71mRoiaz9Y9qzxN4FwjTsq84F9SDZk0BNkXcmEI69jRH3DE0KfV3u NuUXKdVQS2HTrvSpvedhPwknnakDiSZULFVw+84sLQEZdN6TBpgfDBRiTCiwfyC1aFm2 dxEk/PORhdvGqjpNEnx1k+Hcp6SGKI/RsoXf0=

Hi Benoit. No, it doesn't work and it makes sense, since it would be like multiplying a vector by a vector algebraically, which has no sense for a Matrix type (has it?)

I wanted to do element-wise multiplication, and I thought that .array().colwise() would cope with that. Just to clarify, I want to do:

if A = [1 2;
3 4]
and B = [a;b] (matlab notation)
then I want to get something like:

result = [ 1*a, 2*a;
3*b 4*b ]

Should I do this another way? I thought that .array().colwise() was defined to apply the element-wise operation for every column vector in A.

Thanks

On Wed, Sep 29, 2010 at 7:41 PM, Benoit Jacob wrote:
2010/9/29 Carlos Becker <carlosbecker@xxxxxxxxx>:
> Hi all, I was trying to code something like this:
> #include <Eigen/Dense>
> using namespace Eigen;
> using namespace std;
> int main()
> {
> MatrixXf a;
> VectorXf b;
> a.resize(2,4);
> b.resize(2);
> a << 1,2,
> 3,4,
> 5,6,
> 7,8;
> b << 1,2;
> a = a.array().colwise() * b;

Here you're multiplying an array by a matrix.

Doesn't a.colwise() * b work?

Benoit

> return 0;
> }
> Should this compile correctly? I want to multiply every column in matrix a,
> element-wise, with vector b, but I cannot make it work
> I hope I am not forgetting about something important here.
> Cheers,
> Carlos

 Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/