
イースターエッグ
ソフトウェアにおけるイースターエッグとは, 開発者がプログラム内に仕込んだ隠し機能や隠しメッセージのことです. MATLABにも様々なイースターエッグが仕込まれていて, どれも遊び心を感じるものになっています.
この記事では, その一例を独断と偏見によるランキング形式で紹介しようと思います.
独断と偏見によるランキング
5位: fifteen
, xpbombs
なんと15パズルとマインスイーパがFigureウィンドウ上で遊べます. 暇つぶしや休憩のおともにどうぞ(業務中に遊ばないでね).
コード:
fifteen
実行結果:

コード:
xpbombs
実行結果:

ちなみに, コマンドウィンドウで
>> edit xpbombs |
と実行すると, ソースコードを見ることができます. GUIプログラミングをする上で参考になるので, 気になる人は読んでみると良いと思います.
4位: logo
関数
MATLAB芸人なら, 突然MATLABのロゴを出したくなったことが何度もあるはずです.
そんなときに便利なのが, logo
関数です.

内部的には, membrane
関数を surf
を使ってプロットし, 大きさやライトを調整しています.
詳細な手順が公式ドキュメントで示されています.
3位: spy
関数
spy
関数は本来行列のスパース性を可視化するための関数で, つぎのように使用します.
コード:
spy(bucky);
実行結果:

引数なしで実行すると, なぜか犬の顔が表示されます.
コード:
spy
実行結果:

この spy
関数は, 本来の使い方以外にも面白い使い方があります.
非ゼロの要素がある部分にドットが打たれるため, 簡単なドットマトリクスディスプレイとして使用することができます.
これを応用すると, Conwayのライフゲームがこんな感じで実装・表示できます.
コード:
a = rand(128) > 0.7;
while 1
spy(a,'r.',6); drawnow;
a = ~fix(filter2(ones(3),a)-a/2-3);
end
実行結果:

上記のコードはここに書いてあったものをゴルフして作りました.
2位: image
関数
image
関数を引数なしで実行すると…
コード:
image
実行結果:

逆さまになった男の子の顔が表示されます. ちょっとしたホラーです.
実はこの画像にはさらに秘密があって, 各画素のdoubleの値のうち53ビットをbitrotateすると, 隠し画像が現れるらしいです. 説明が結構面倒なので, 詳細はこちらをご覧ください.
1位: why
関数
why
関数は上記に挙げた関数とは違い, 特にこれといった用途のない関数です.
インパクトには欠けますが, これを知っている人は結構なMATLAB通だと思います.
why
を実行すると, 予め用意された語句を組み合わせたへんちくりんな文が表示されます.

これを使った実用的なコードを何か考えられるでしょうか? 思いつく人がいたら教えてください.
まとめ
いかがでしたか? 皆さんはいくつ知っていましたか?
ほかにもバージョンごとにいろいろな隠し要素があるようなので, 探してみると面白いのではないかと思います. それでは, よいMATLAB芸人生活をお送りください.
参考
- What matlab easter eggs do you know? - MATLAB Answers - MATLAB Central
- Creating the MATLAB Logo - MATLAB & Simulink Example
- Mathematical Recreations: Tweetable Game Of Life » Loren on the Art of MATLAB - MATLAB & Simulink