[Rcpp-devel] RcppArmadillo matrix with writeable auxiliary memory
Steven Varga
steven.varga at gmail.com
Tue Nov 26 22:47:50 CET 2013
arma::mat pointer method worked; while I trying to get the same result with
arma::mat view without copying data, or passing the entire matrix seemed to
be laborious.
The following patter provides read/write access to some memory location
using armadillo matrix operations.
/*
* Contact: Steven Varga
* steven.varga at gmail.com
* 2013 Toronto, On Canada
*/
#include <R.h>
#include <stdlib.h>
#include <RcppArmadillo.h>
using namespace std;
// [[Rcpp::depends(RcppArmadillo)]]
struct Example {
Example(double *ptr) {
A= new arma::mat(ptr, 3,2, false, true ); // no copy contstructor
arma::mat &a = *A; // dereferencing A gets rid of A-> syntax
a(1,1) = 1; // convenient matlab like syntax
}
~Example(){ delete A; } // clean up
arma::mat *A;
};
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
void arma_example() {
arma::mat M(3,10); // implicit memory allocation
M.zeros(); // paint with zeros
M.print(); cout<<endl<<endl;
Example E(M.memptr());
M.print(); // altered as planned
}
// EOF
On Tue, Nov 26, 2013 at 8:11 AM, Steven Varga <steven.varga at gmail.com>wrote:
> Thank you Simon for suggesting pointer then dereferencing it later in
> class methods.
>
> Dirk also suggested using matrix views which may have the same performance
> while keeping syntax neat.
>
> Will repost both working solution later on for the record.
>
> Thanks again, I found all suggestion very helpful,
> Steven
> On Nov 26, 2013 6:19 AM, <szehnder at uni-bonn.de> wrote:
>
>> Steve,
>>
>> If you want to use a variable being an arma::mat obejct with varying
>> memory, you could use an arma::mat pointer. Otherwise if memory stays the
>> same but should be reusable in R, Dirk's suggestion initialising memory in
>> R and passing it to C++ is the most practicable way and very fast.
>>
>> Best
>> Simon
>> Gesendet über den BlackBerry® Service von E-Plus.
>>
>> -----Original Message-----
>> From: Steven Varga <steven.varga at gmail.com>
>> Sender: rcpp-devel-bounces at lists.r-forge.r-project.orgDate: Mon, 25 Nov
>> 2013 23:23:24
>> To: <rcpp-devel at lists.r-forge.r-project.org>
>> Reply-To: steven.varga at gmail.com
>> Subject: Re: [Rcpp-devel] RcppArmadillo matrix with writeable auxiliary
>> memory
>>
>> _______________________________________________
>> Rcpp-devel mailing list
>> Rcpp-devel at lists.r-forge.r-project.org
>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20131126/413501a5/attachment.html>
More information about the Rcpp-devel
mailing list