Octaveの概要とMatlabとの違い

プログラミング言語はたくさんありますが,皆さんは何を使ってますか?

最近だとやはりpythonが多いのでしょうか.pythonは本当に何でもできて使い勝手が良いですよね.私もよく使います.

pythonの他にもう一つ,Octaveという言語も私は使っています.こちらは知る人ぞ知るという感じでしょうか.ちなみにMatlabだったら知っている,聞いたことがあるという人が多いと思います.実はこのOctaveですが,Matlabの無料版という位置付けでよく使われている言語なのです.

この記事では以下の2点について書いていきたいと思います.

  1. Octaveの概要
  2. OctaveMatlabとの違い

 

1. Octaveの概要

Matlabと言えば科学技術計算に特化したプログラム言語としてよく知られていますが,その高い性能故になかなかにコストも高いです.仕事で使っている人は多くても,個人でわざわざ購入する人はほとんどいないと思います.

ちなみに購入ページはこちら↓

https://jp.mathworks.com/store/

 

それでも便利なMatlabを個人でも使いたい人のために,世の中には無料版Matlabと言えるものがあり,その中の一つがOctaveです.

ちなみに他にもScilab, FreeMatといったものがあるようですが,説明を見る限りMatlabへの完全な互換性はなく,Scilab, FreeMat専用のコードの書き方が必要になりそうな印象です.(実際に使ったことがないのであくまで推測ですが.)

これに対してOctaveMatlabと完全に互換性があります.少なくとも私が使っている限りではMatlab用にコードを書くのと,Octave用にコードを書く場合で両者は全く同一のコードになります.実際に例えばMatlab用に書いたコードをOctaveで実行するとエラーなく普通に動きます.

完全互換性があることの大きなメリットとして,Matlabの公式ドキュメントを参照できることが挙げられます.完全互換性がありコードが全く同一なので「Matlabの公式ドキュメント」=「Octaveの公式ドキュメント」にもなるわけです.どういうことかというと,Octaveを使っていてわからないことが出てきた場合,「Octave 〇〇」とgoogle検索してもあまり資料はなく,あっても英語で書かれてるなんてことが多いのですが,そういう時は「Matlab 〇〇」と検索すれば一番上にMatlabの公式ドキュメントが出てきて,それを見れば大抵のことは解決します.というのもMatlabの公式ドキュメントはものすごく充実しており,しかも日本語にも対応しています.

 

2. OctaveMatlabとの違い

そんなOctaveですが,やはり無料版なので本家Matlabにしかない機能,すなわちOctaveではできないことがいくつかあります.両者の違いを簡単に下記表にまとめてみました.

  Octave Matlab
コスト 無料 有料
GUI
CLI
使える関数の種類 一部使えない 全て使える
Simulink機能 ×

コストについては前述の通り.GUI/CLIというのはユーザインタフェースのことで,昔のOctaveCLI(コマンドラインインタフェース)しかなかったようですが,現在ではGUI(グラフィカルユーザインタフェース)もちゃんとあります.

f:id:kedarumasan:20200627112526p:plain

MacOctave-4.4.1のGUI例(見た目的にもMatlabと遜色ありませんね.)


続いて使える関数の種類についてですが,ほぼ全てのMatlab関数を使えるのですが一部搭載されてないものもあります.例えばプロット関数でいうと,2Dプロットでx軸を共用できるstackedplot関数や3Dプロットのfsurf関数なんかはOctaveには搭載されていません.ただ,stackedplotはsubplot関数で十分代用できますし,fsurfが使えなくてもsurf関数やmesh関数は使えるので何の問題もありません.ちなみに未搭載の関数を実行しようとしたり,helpで参照すると下記のようなメッセージが出てきます.

error: help: the 'fsurf' function is not yet implemented in Octave

Please read <https://www.octave.org/missing.html> to learn how you can
contribute missing functionality.

エラー内容を見ればコードミスではなく,使おうとしている関数が「まだ」搭載されてないことがわかるので親切ですね.「まだ(not yet)」と書いてあるので今後のアップデートで搭載される可能性もあります.

 

最後にSimulink機能ですが,Octaveにはこれに該当する機能はありません.無料故にここまでは流石に対応できないのでしょう.今後のアップデートに期待です.

 

 

以上,長々と書きましたが,Octaveの概要とMatlabとの違いについての記事でした.