Re: [eigen] Array cwise multiplication

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


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 <jacob.benoit.1@xxxxxxxxx> 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/