MATLABと言えばセル配列と言われているとかいないとかですが、ここではセル配列から特定の要素を抽出する方法を色々と紹介したいと思います。
他の言語の配列ではあまり馴染みのない方法も結構あります。こんなやり方もあるのか!という発見があるかもしれません。
初めに
これ以降の説明で使用するセル配列として以下の”sampleCell”を準備しておきます。
特定の1行/1列のみ取り出す
2行目だけ取り出してみます。
sampleCell(2, :)
3列目だけ取り出してみます。
sampleCell(:, 3)
上記のスクリプトで”:”を使用していますが、これは”1:end”の省略形です。
3列目を取り出す場合であれば、以下のようにしても一緒の結果が返ってきます。
sampleCell(1 : end, 3)
特定の複数行/複数列を取り出す
2行目~4行目を取り出します。
sampleCell(2 : 4, :)
2列目~4列目を取り出します。
sampleCell(:, 2 : 4)
2行目と4行目を取り出します。
奇数行(1,3,5行目)を取り出します。
sampleCell(1 : 2 : 5, :)
特定の範囲を取り出す
2行3列~4行4列を取り出します。
sampleCell(2 : 4, 3 : 4)
sampleCell([2 4], :)
条件を満たす値を取り出す
1列目の数値が30よりも大きい行を取り出します。
ret = cellfun(@(x) x > 30, sampleCell(:, 1))
sampleCell(ret, :)
これはセル配列のインデックスの指定に、セル配列と同じサイズのboolean型配列を指定できることを利用しています。
セル配列の中から条件を満たすものだけ抽出するような場合に便利な方法です。
コメント