MATLABスクリプトの特徴としてセル配列の存在があります。そしてセル配列をそのまま使うことができる関数も数多く存在します。
ここではセル配列を使うことができる、個人的使用頻度の高い関数をいくつか紹介したいと思います。
get_param関数
モデル検索のお供として頻出のget_param関数です。
たいていの場合はfind_system関数と一緒に使用します。find_system関数がセル配列を返すので戻ってきたブロックパスをそのまま渡せます。
残念ながらset_param関数では使用できません。
strcmp関数
文字列比較のstrcmp関数です。ある文字列がセル配列の中に存在するかどうかをチェックするため片方の引数にはセル配列を、もう片方の引数には文字列を指定することが多いです。
親戚?のstrncmp関数も同じ用途で使用します。
両方の引数にセル配列を指定することもできますが、あまり使ったことがありません。
regexp関数
正規表現のregexp関数にも使用できます。用途は色々ありますが、検索にヒットしないと空が返ってくることを利用して、以下のようなstrcmp関数の拡張版のような使い方が便利です。
ary = {'AAA', 'ABB', 'ACA'}
tmp = regexp(ary, '^A.*A$'); %先頭と最後が"A"であるものを取得
ret = ~cellfun(@isempty, tmp);
regexprep関数
文字列を規則に応じてまとめて変換してしまいたい場合に重宝します。
ary = {‘AAA’, ‘ABB’, ‘ACA’}
regexprep(ary, ‘A$’, ‘C’); %最後がAの文字列の最後Cに変更
最後に
セル配列が使える関数をいくつか紹介しました。
この他にも色々、特に文字列関係の関数は大体の場合セル配列の使用がOKです。
これらの関数ですが、セル配列を関数で使用するためにcellfun関数を使ってしまうと、処理速度が大幅に落ちてしまいます。
cellfun関数を使用する前に、まずそもそも関数がセル配列に対応していないか、調べるようにしましょう。
コメント