僕がMATLABを使いだした当初、どうも慣れなかったものがセル配列です。
スクリプトを作ってもカッコの付け方が間違っててエラーで止まるし、これどうなってるんだ!と思った記憶があります。
ということでここではセル配列の使い方について簡単にですが紹介したいと思います。
セル配列とは何物?
ざっくり言うと「何でも入れることができる配列」です。
セル配列以外に通常の配列もあるのですが、通常の配列に入れることができるものは数値のみです。
しかし、セル配列には数値以外にも文字列や構造体、更にセル配列の中にセル配列を入れるなんていう芸当もできてしまいます。
セル配列の作り方
セル配列を作るには以下のように波括弧”{}”を使用します。
testCell = {’aaa’, 'bbb', 1};
波括弧内の値をコンマ’,’で区切ると列の方向で区切られますが、セミコロン’;’区切ると行の方向で区切ることができます。
testCell = {’aaa’; 'bbb'; 1};
N行M列のセル配列も作成できます。例えば以下のようにすると2行3列のセル配列が作成できます。
セル配列の初期化方法
MATLABは変数宣言をしなくてもいきなり値を入れることができるのですが、事前にセル配列の宣言をしてメモリを確保しておきたい時もあります。
その場合はcell()関数を使用することで任意のサイズの空のセル配列を作成できます。
例えば4行5列の空のセル配列”emptyCell”を作成するには以下のスクリプトを実行します。
emptyCell = cell(4, 5);
セル配列に格納されている値を取り出す方法
セル配列の値を取り出す場合にも”{}”を使用します。
3行3列のセル配列”testCell”から2行3列の値を取り出す場合は以下のようにします。
testCell{2, 3}
なお、インデックスを指定する場合に波括弧”{}”でなく丸括弧”()”を指定してもエラーとはなりません。
しかし、丸括弧で指定した場合はセル配列の中身が数値であれ文字列であれ、必ずセル配列が返されます。
よくやってしまうミスなのですが、例えばセル配列の2行3列に入っている値が”22″と一致しているかをチェックしようとして
testCell(2, 3) == 22
のようにしてしまうとセル配列と数値を比較することになってしまうためエラーとなります。
セル配列の中身と比較したいのであれば
testCell{2, 3} == 22
のように波括弧”{}”でインデックスを指定する必要があります。
セル配列に値や文字列等を入れる方法
中身を取り出すときと同じく、セル配列に値や文字列等を入れたい場合も波括弧”{}”を使用します。
3行3列のセル配列”testCell”の2行3列に文字列”abc”を入れるには以下のようにします。
testCell{2, 3} = 'abc';
セル配列の中に入れる場合も取り出すときと同じく丸括弧は使用できません。
コメント