RにはOctave/MATLABのコードを扱おうとしているパッケージがいくつかあります。
私自身はMATLAB持っているので、自分的にはあまり意味がないという気もしますが…
RでMATLAB/Octaveのコードを試せると良いですよね。
と、いうことでRでMATLABのコードを移植するために必要なパッケージを探してみました。
MATLABが手元にない場合はOctaveが選択肢に上がると思います。しかしOctaveは起動時に「windows10については試験中」という表示が出ます。多分動いているので問題はないとは思うのですが。
…だもんで、人に勧めるときに自信をもって勧めることができない(win使うなって言われても仕事で使いますからねぇ…)
それ、Rでやりましょう
sosパッケージでMATLABとかOctaveで検索すると結構ヒットします。今後ちょっと使っていこうかなというパッケージを(自分のために)まとめておきました。
なお、関数名の衝突が怖いので自分はlibraryで読ませずに全てパッケージ名::関数名で使おうと思っています(=まだちゃんと使えていません)
pracma
MATLAB/Octaveの関数名と互換があるように書かれたパッケージ。
後述のcontrolパッケージはこのパッケージに依存しています。
iemisc
こちらもMATLAB/Octaveの関数名とコンパチになるようなパッケージ。
ただ、Suggestsに入っているRcppOctaveパッケージがCRANから消えているので、pracmaの方が良いのかな。自身の更新も2016年で止まっているようですし、説明もmiscパッケージということなのであまり積極的な更新はないかもしれませんねぇ…。とりあえずpracmaの方使おう。
signal
Octave の Signal パッケージ(Signal Processing Tool Kit)相当のパッケージ tuneRなどとあわせて使うことになりそうです。
control
Octave の Control (MATLABのControl System Toolbox)に相当するパッケージ。
controlパッケージについては以前ちょっとだけ書きました。 niszet.hatenablog.com
その他
ちなみに、他にもMATLABに関係しそうなパッケージはいくつかあります(sosパッケージで見つけたもの)
また、これ以外にも信号系のパッケージ(tuneRとかね)はいくつかあるのでそれはまた気が向いたときに。
stem関数
MATLABのstem関数は下記の記事を参考にすると良いです。離散のデータをプロットした時のあの〇と棒での表示は見やすいですよね。
上記パッケージ群とこのfunctionを使えばplotまわりもほとんど考えずに移植が可能かもしれません。 www.r-bloggers.com
さぁこれで、Rだから信号処理できないとか言えなくなりましたね!(私が)
controlパッケージのお陰てState Spaceが扱える(ただし推定は??)ので、伝達関数以外も扱えるのがうれしい。R布教活動にも使えそうです。
Enjoy!!