2013-07-01から1ヶ月間の記事一覧

Dynamic Linear Model

カルマンフィルタをDynamic Linear Modelの枠組みでの位置として考えよう dlmパッケージのvignette 状態空間を線形代数するのがDynamic Linear Model 簡単なモデルから徐々に複雑にしていこう ルールが時間について一定な場合 一番簡単なモデル 状態が時間に…

Rとのデータのやりとりをさらに復習する

#include <RcppArmadilloExtensions/sample.h> // [[Rcpp::depends(RcppArmadillo)]] using namespace Rcpp ; // [[Rcpp::export]] int int_int(int n,int d) { int ret = n+d; return ret; } // [[Rcpp::export]] double int_double(int n,int d) { double nd = n*1.0; double dd = d*1.0; dou</rcpparmadilloextensions/sample.h>…

返り値をリストで統一してみる

Rの関数の返り値はリストとするのが基本になっているので、Rcppを使うときもそう決めてしまうのも手かもしれません。以下のように… // [[Rcpp::export]] List hogeReturningList(****) { **** return List::create( Named("hogeInt") = x, Named("hogeNumeri…

Rcpp.package.skeleton()を使って、まとめておく

ここにも書いたようにRcpp.package.skeleton()のlist argumentはpackage.skeletonのそれとは違って、挙動が不明なのでひとまず使わない方針とする 次の3ファイル(2ファイルがc++,1ファイルがRのコードとする) c++のヘッダファイルも作った方がよいような…

Rcpp Attributesを読む

library(Rcpp) vignette("Rcpp-attributes") とすることで"Rcpp Attributes.pdf"という文書が読める Rcppはいくつかの解説文書を持つが、この"Rcpp Attributes.pdf"は比較的新しい方の文書で、sourceCpp()関数によるseamless between c++ and Rの機能の追加…

基礎的な算術計算など

#include <RcppArmadilloExtensions/sample.h> // [[Rcpp::depends(RcppArmadillo)]] using namespace Rcpp ; // [[Rcpp::export]] NumericVector factorial_num(int n) { NumericVector x(n); x[0] = 1; for(int i=1;i</rcpparmadilloextensions/sample.h>

math.h関連

math.h #include <RcppArmadilloExtensions/sample.h> // [[Rcpp::depends(RcppArmadillo)]] using namespace Rcpp ; // [[Rcpp::export]] NumericVector arith(double a, double b) { NumericVector x(28); x[0] = a+b; x[1] = a-b; x[2] = a*b; x[3] = a/b; x[4] = fmax(a,b); x[5] = round(a</rcpparmadilloextensions/sample.h>…

Rcpp.h,RcppArmadillo.hなど基礎

""はここにあるように、RcppArmadilloでRの乱択ができるように書かれたhファイルだが、その中で#include しているので、RcppArmadillo.hのいろいろも使えている(ここも参考) C:\Users\hogeUserName\Documents\R\win-library\3.0\RcppArmadillo\include\RcppA…

self-avoiding pathの続き。複数のagents

こちらでself-avoiding pathを書いてみた。データ型宣言も体系的に勉強せずに、みようみまね、検索・検索真似で書いているので、なかなか大変 コンパイルはするけれど、データ格納場所(アドレス)指定の破たんなどが頻発するので、しょっちゅう止まります そ…

Rcpp 0 からやりなおし その4

ループ盛りだくさんの処理を比較する

こちらにself-avoiding pathのシミュレーションがある Rcppを使って比較してみる #include <RcppArmadilloExtensions/sample.h> // [[Rcpp::depends(RcppArmadillo)]] using namespace Rcpp ; // [[Rcpp::export]] using namespace Rcpp; IntegerMatrix selfAvoidingPathCpp2(int k,int past,in</rcpparmadilloextensions/sample.h>…

一括してsourceCpp() たくさんcppファイルを作ったら

練習でたくさんのcppファイルを作ると、sourceCpp("hoge.cpp")が面倒くさくなる ので、ディレクトリの中のcppファイルのリストを作って、一括して処理 library(Rcpp) library(RcppArmadillo) sourceCpp.list <- function(files,silent=TRUE){ for(i in 1:len…

ウェブサイトの例をなぞってみる

Rcpp Galleryから Calling R Functions from C++ C++内でRの関数を使う #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] NumericVector callFunctionInt2Vector(int x, Function f) { NumericVector res = f(x); return res; } > sourceCpp("callFunct</rcpp.h>…

fastLmPure():RcppArmadilloを使ってみる

線形回帰 data(trees, package="datasets") fastLmPure( cbind(1, log(trees$Girth)), log(trees$Volume) ) fastLm( log(Volume) ~ log(Girth), data=trees) lm(log(trees$Volume) ~ log(trees$Girth)) > fastLmPure( cbind(1, log(trees$Girth)), log(trees…

繰り返し距離:RcppArmadilloを使ってみる

こちらのマハラノビス距離の繰り返し計算でスピードアップの様子を見てみよう cxxfunction()関数を使っている例をsourceCpp()用に書き換えてみる データ型指定はRcpp namespace形式らしい ## Using RcppArmadillo code <- 'arma::mat x = Rcpp::as<arma::mat>(X); arma:</arma::mat>…

sample():RcppArmadilloを使ってみる

Cppの線形代数ライブラリArmadillo sample()をcppにしてみよう。速くはならないけれど、cpp内での処理が可能になる "csample_char.cpp","csample_num.cpp"という関数ファイルを作って、sourceRcpp()する(参考) // [[Rcpp::depends(RcppArmadillo)]] #include <RcppArmadilloExtensions/sample.h></rcpparmadilloextensions/sample.h>…