みなさんお久しぶりです,マハトです.

前回のMAT&ドLABンズの記事から早3か月,最近卒論が忙しいせいでなかなかMATLABで遊ぶことができなかったのですが,先日自分の卒論を書く上で使うツールをMATLABで開発し,それが意外といい出来になったので紹介したいと思います.

作ったものはタイトルの通り,グラフエディタです.グラフとはいっても「いわゆるx軸とy軸があって~」というグラフではなく(そもそもそれならplot関数でいいですよね),下の図のように通信構造などを表すためのグラフです.
 example
各頂点がエージェント,矢印が通信を表しています.例えばエージェント4はエージェント1,3から情報を得ることができます.
また,このグラフがどのような構造をしているかを数学的に表現するものとして「グラフラプラシアン」という行列があります.グラフラプラシアンの各要素をL_ijとすると,その定義は次のようになります.

・i =jのとき
L_ij=自身に向かう矢印の数
・jからiへの矢印が存在するとき
L_ij=-1
・それ以外
L_ij=0
  例えば上のグラフではグラフラプラシアンは次のようになります.
1 0 0 0 0 -1
-1 1 0 0 0 0
0 -1 1 0 0 0
-1 0 -1 2 0 0
0 0 0 -1 0
0 0 -1 0 -1 2

 1には6のみから矢印が来ているので(1,1)は1,(1,6)は-1というようなかんじです(見比べてみてください).

このグラフとグラフラプラシアンは基本的にセットで使うので,グラフを書きつつそのグラフラプラシアンを計算するツールが欲しかったんです.そこで,MATLABのGUI機能を使ってそのようなツールを作ってみました. 

start
起動するとこんなかんじで2つのウィンドウが開きます.左でグラフを書き,右で頂点の数を変えたりグラフラプラシアンを計算したりします.

1click edge
矢印を書きたければ,始めの頂点をクリック(頂点が赤くなる)し,終わりの頂点をクリックすることで簡単に書けます.ちなみに消したいときは矢印をクリックしてからキーボードの「d」を押すと消せます.number
右のテキストボックスで頂点の数を変えられます.このときすでに書かれている矢印は保存されるので,いちいち書き直す必要はありません.

gl2
右の「Calculation」ボタンを押すとコマンドウィンドウにグラフラプラシアンが表示されます.

 グラフを保存するときは,plotを保存する時のように「ファイル」→「名前を付けて保存」とすることで好きな形式で保存できます..figファイルで保存すれば,それをMATLABで開くことで再編集できます.


機能は大体こんなかんじです.自分の卒論用だったので,頂点の位置は円周上に均等に並べることしかできませんし,中の文字も変えられません.卒論が終われば暇になると思うので9月にはそこらへんも修正して公開したいなと思っています.
特にこれから卒業研究をする人の中にはマルチエージェントシステムを扱う人もいると思うので,そういった人が便利に使えるようなツールに仕上げていきたいと思います.


ということで,今回はここまでとなります.fmシンセサイザ,パズドラ,ペイントときて,ついに「MATLABで○○作ってみた」企画では初となる実用的なツールが完成しそうで,ちょっと感動です.