Re: [eigen] conservative resize ... |

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

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] conservative resize ...*From*: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>*Date*: Mon, 7 Sep 2009 14:13:54 +0200*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=hWnDKZUsMRVEeDtLBXwZcOQn3n5BABJ1veNwdikD3Eo=; b=Ajt0VWz9em0K+dQJi9heiKH5YDbVCVpcBB0ZlaXO0onSJvpEnaBPc5dFuG9OsJHNmg q9kSg79ZrEk002k3nx25sNFQNnu8Vo3o9hGIO+LiToamMI8w3yPJMU3q/hUUG/vSyoxK XlaTN656ozoX91f7j/9AtBFSckpox7zNq7ae0=*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:content-transfer-encoding; b=g57Kjde2Q8aelsJgfFzURX9ACcM4d6wE49Gxaal+7fmwNNlwRkOvOFj5Ghx/F+b2Qt 8Tz3mFqPGkFIDKHy8V1vEZgWqQHr6MHVDG8Y8kGM9PCuQLkyTiHhXJ4ONt2v+98Q38pQ 9jNmlXfq2yb9xP7uhnnIXn7r33+ioMf9FU3Rk=

hi, what about the following: - we keep only the two simple conservativeResize() overloads taking only size arguments - we add one template overload: template<typename OtherDerived> void conservativeResize(const MatrixBase<OtherDerived>& other); resizing *this to match the sizes of other, and filling the extended parts from the respective parts of other. Typical use cases: Mat m; // ... // extend with 0 (similar to the current m.conservativeResize(r, c, true)) m.conservativeResize(Mat::Zero(r,c)); // extend with x: m.conservativeResize(Mat::Constant(r, c, x)); // and some more complex examples: m.conservativeResize(Mat::Identity(r,c)); m.conservativeResize(Mat::Random(r,c)); The drawback is that it makes the "extend with zeros" a bit more verbose. Alos, perhaps conservativeResize() is not a very good name for this overload, but what do you think about this idea ? cheers, gael. On Mon, Sep 7, 2009 at 1:52 PM, Hauke Heibel<hauke.heibel@xxxxxxxxxxxxxx> wrote: > On Mon, Sep 7, 2009 at 1:34 PM, Márton Danóczy<marton78@xxxxxxxxx> wrote: >> You're right, initializing a matrix after resizing should suffice, if >> it is not slower than doing both in one step. > > It is possible and would probably be even faster - if done correctly. > I am just saying this because you would need to take care of > initializing only those parts of the matrix which are yet > uninitialized. At the moment, when pre-initializing with zeros, the > parts of the old and resized matrices that overlap are accessed twice. > Once for initializing with zeros and a second time to copy the old > values. > > @Benoit, ExtendByZero is fine. I am just wondering, was there a > particular reason for making NoChange_t a struct? Should we follow the > same strategy to ExtendByZero? > > - Hauke > > >

**Follow-Ups**:**Re: [eigen] conservative resize ...***From:*Hauke Heibel

**Re: [eigen] conservative resize ...***From:*Márton Danóczy

**References**:**[eigen] conservative resize ...***From:*Hauke Heibel

**Re: [eigen] conservative resize ...***From:*Benoit Jacob

**Re: [eigen] conservative resize ...***From:*Márton Danóczy

**Re: [eigen] conservative resize ...***From:*Benoit Jacob

**Re: [eigen] conservative resize ...***From:*Márton Danóczy

**Re: [eigen] conservative resize ...***From:*Hauke Heibel

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] conservative resize ...** - Next by Date:
**Re: [eigen] conservative resize ...** - Previous by thread:
**Re: [eigen] conservative resize ...** - Next by thread:
**Re: [eigen] conservative resize ...**

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