※こちら記事は中編です.前編はこちら
中身が2行だけ書かれた,以下のMATLABプログラムについて解説していきます.
function W = SLD(H,M)
W = nchoosek(1:H+M-1,M-1) - repmat(0:M-2,nchoosek(H+M-1,M-1),1) - 1;
W = ([W,zeros(size(W,1),1)+H]-[zeros(size(W,1),1),W])/H;
end
前編では,プログラムの入出力とその性質,利用される分野を解説しました.
中編では,プログラムを読み解くために必要なMATLABの知識を解説します.
MATLABは,多次元配列を扱えるように設計されています.そのため,説明に「配列」と書かれることが多いです.この記事では,分かり易さのため,任意の次元の配列を指す場合のみ「配列」と書くことにします.
各用語の対応は,以下の通りです.
MATLABは,1つの関数が複数の機能を持っていることがあります.nchoosek
は,2つの機能を持っており,どちらも解説します.それ以外の関数は,プログラムを読み解くために必要な機能のみ解説します.
解説の理解に詰まった場合,まずは演算子と特殊文字や配列と行列の演算を見てみることをお勧めします.
算術演算子(+-*/)
の説明は,省略します.
MATLABは,変数を同じように操作する方法が複数提供されている場合があります.単純操作の多くに代替法が設定されており,関数として意識することなく利用できます.
ここでは,明示されていない基本的な組み込み関数を4つ解説します.
[1 2 3 4]
1:4
colon(1,4)
[A; B]
vertcat(A,B)
[A B]
[A,B]
horzcat(A,B)
[1; 2; 3]
[1 2 3]'
[1 2 3].'
transpose([1 2 3])
ctranspose([1 2 3])
なお,: はベクトルの作成の他,インデックス,for ループの反復でも使われます.
; は配列の連結の他,行末の指定,コード行の出力の非表示でも使われます.
明示されているMATLABの組み込み関数は,プログラム内で赤色の文字で表示されます.
ここでは,プログラムに登場する4つの組み込み関数を解説します.
6
nchoosek(4,2)
[[1 2];[1 3];[1 4];[2 3];[2 4];[3 4]]
nchoosek(1:4,2)
[[9 8];[9 8];[9 8]]
repmat([9 8],3,1)
3
size([9; 8; 7],1)
[0; 0; 0]
zeros(3,1)
演算子の優先順位はここを参照ください.今回のプログラムでは,以下の3つの基準だけ覚えれば大丈夫です.
以上の知識があれば,プログラムを読み解くことができるはずです.
「中身が2行だけ書かれたプログラムを全力解説」中編では,プログラムを読み解くために必要なMATLABの知識を解説しました.
次回の後編では,いよいよプログラムの解説に入ります.お楽しみに.