Re: [eigen] Eigen "views" |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Eigen "views"
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Mon, 15 Aug 2011 15:24:34 -0400
- Cc: Michael Dixon <mdixon@xxxxxxxxxxxxxxxx>
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=34UdfUZbt0VunuXwggZeqqVpJAZX/6rGJuLv2/LFEjQ=; b=iniPOlnQf5d1WoBBCXfJcZzDEJcr5ijIvvIWULajteVFaAJEONg6WFqvbzh00nbeDK Ot8phIP4+RDSivRqob+eHslBuSjGVjur3MrlzkHDzcLWLnqyirDAVE0eB6TCDR+NXZr0 0FIp/z8iOMygP25/lz5iOJw0noiZ5EmG0+DvY=
(Disclaimer: I've been away for a while so I might not be up to date.
If Gael contradicts me, listen to him)
This has been asked for many times, and I think there was consensus
that this would be a welcome addition. It also isn't hard to
implement. It's just that nobody has actually done the work yet :)
If you want to do it yourself, the right Eigen way to do it is to add
a new expression class, holding references to the original vector and
to the integer vector of indices. For a simple expression class to
start from as an example, look at the Minor class in Eigen2Support,
it's as easy as it gets. The core part of the implementation would be
the coeff() accessor methods in this class, and they would look like:
CoeffReturnType MyViewExpression::coeff(Index i)
{
return m_originalVector.coeff(m_indicesVector.coeff(i));
}
I'll be happy to provide guidance.
Cheers,
Benoit
2011/8/15 Radu B. Rusu <rusu@xxxxxxxxxxxxxxxx>:
> Hi guys,
>
> We were wondering whether there was ever a discussion about implementing
> "views" into Eigen. Here's an example:
>
> Eigen::Vector<dynamic, float> vector1, vector2;
> vector1 = defineSomeDataSomehow ();
> Eigen::Vector<dynamic, int> idx = defineSomeIndicesSomehow ();
> vector2 = vector1 (idx);
> assert (vector2.size () == idx.size ());
>
>
> Basically addressing data without copies.
>
> Thanks,
> Radu.
> --
> Point Cloud Library (PCL) - http://pointclouds.org
>
>
>