niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

RにMATLAB/Ocatveのコードを移植して試してみるために

RにはOctave/MATLABのコードを扱おうとしているパッケージがいくつかあります。

私自身はMATLAB持っているので、自分的にはあまり意味がないという気もしますが…

niszet.hatenablog.com

RでMATLAB/Octaveのコードを試せると良いですよね。
と、いうことでRでMATLABのコードを移植するために必要なパッケージを探してみました。

MATLABが手元にない場合はOctaveが選択肢に上がると思います。しかしOctaveは起動時に「windows10については試験中」という表示が出ます。多分動いているので問題はないとは思うのですが。

…だもんで、人に勧めるときに自信をもって勧めることができない(win使うなって言われても仕事で使いますからねぇ…)

それ、Rでやりましょう

sosパッケージでMATLABとかOctaveで検索すると結構ヒットします。今後ちょっと使っていこうかなというパッケージを(自分のために)まとめておきました。

なお、関数名の衝突が怖いので自分はlibraryで読ませずに全てパッケージ名::関数名で使おうと思っています(=まだちゃんと使えていません)

pracma

MATLAB/Octaveの関数名と互換があるように書かれたパッケージ。
後述のcontrolパッケージはこのパッケージに依存しています。

CRAN - Package pracma

iemisc

こちらもMATLAB/Octaveの関数名とコンパチになるようなパッケージ。

CRAN - Package iemisc

ただ、Suggestsに入っているRcppOctaveパッケージがCRANから消えているので、pracmaの方が良いのかな。自身の更新も2016年で止まっているようですし、説明もmiscパッケージということなのであまり積極的な更新はないかもしれませんねぇ…。とりあえずpracmaの方使おう。

signal

Octave の Signal パッケージ(Signal Processing Tool Kit)相当のパッケージ tuneRなどとあわせて使うことになりそうです。

CRAN - Package signal

control

Octave の Control (MATLABのControl System Toolbox)に相当するパッケージ。

CRAN - Package control

controlパッケージについては以前ちょっとだけ書きました。 niszet.hatenablog.com

その他

ちなみに、他にもMATLABに関係しそうなパッケージはいくつかあります(sosパッケージで見つけたもの)

また、これ以外にも信号系のパッケージ(tuneRとかね)はいくつかあるのでそれはまた気が向いたときに。

stem関数

MATLABのstem関数は下記の記事を参考にすると良いです。離散のデータをプロットした時のあの〇と棒での表示は見やすいですよね。

上記パッケージ群とこのfunctionを使えばplotまわりもほとんど考えずに移植が可能かもしれません。 www.r-bloggers.com

さぁこれで、Rだから信号処理できないとか言えなくなりましたね!(私が)

controlパッケージのお陰てState Spaceが扱える(ただし推定は??)ので、伝達関数以外も扱えるのがうれしい。R布教活動にも使えそうです。

Enjoy!!