Compose-2020:OMLでの行列の操作

Tutorial Level: Beginner

このチュートリアルでは、以下の操作方法について説明します:
  • 行列を作成する。
  • 行列を切り出す。
  • 行列を抽出する。
  • 行列に対する簡単な演算を実行する。

行列の作成

行列はOMLで中心となる存在で、浮動小数点数、文字、複素数を含むことができます。

  1. 行列を作成するには、次の例のように角括弧([])を使用します。
    a = [1,2;3,4]       

    次のコマンドを使用して同様の行列を作成することもできます。

    a = [1 2;3 4]
    a = [1 2
         3 4]
  2. 実行をクリックします。これら3種類のどの代入式でも次の値が返されます。
  3. 複素数の場合は、次のように行列の要素にiを使用するか、complex関数を使用します。
    a = [1 2 ; 3+i 4+i]

    または、次のように指定します。

    a = complex([1 2;3 4],[0 0;1 1])
    どちらの方法でも次の結果が返されます。

行列の切り出し

  1. 行列から行または列の全体を切り出すには、最初の列に:を使用します。
    a = [1,2;3,4]
    a(:,1)
    これによって、次のように行列aの1列目が抽出されます。
  2. 複数の行または列を切り出すには、次のようにそれらの行または列を指定した配列を使用します。
    a = [1 2 3;4 5 6;7 8 9];
    % the first and third rows of a
    a([1, 3],:)

    これによって、次のように行列aの1行目と3行目が抽出されます。

  3. 行列の切り出しでは、行または列にある最後のインデックスをendで指定できます。
    a = [1 2 3;4 5 6;7 8 9];
    a(end,:)

    これによって、次のように行列aの最後の行が返されます。

    a = [1 2 3;4 5 6;7 8 9];
    a(:,end-1)
    このスクリプトでは、次のようにaの最後から2番目の列が返されます。

行列の抽出

  1. 行列にある特定の要素を抽出するにはa(x,y)を使用します。aは行列の名前、xは参照先の行、yは参照先の列を表します。以下に例を示します。
    a = [1,2;3,4]
    b = a(1,1)

    次の結果が得られます。

  2. 行列にある特定の複数の要素を抽出するには、それぞれ参照先の行と参照先の列を指定する2つの配列を使用します。以下に例を示します。
    a = [1 2 3;4 5 6;7 8 9];
    a([1 3],[2 1])

    [1 3]は1行目と3行目を表し、[2 1]は2列目と1列目を表します。

  3. 配列にある最後の要素を抽出するためのショートカットとしてendを使用できます。次に例を示します。
    a = [1 2 3;4 5 6;7 8 9]
    b = a([2,3],[2:end])

    この結果は次のようになります。

  4. 代入演算を結合できます。次の例では、切り出した行列から要素を抽出します。
    a = [1 2 3;4 5 6;7 8 9]
    % return to the third row of a
    a(3,:)
    % return to the second element of the third row
    a(3,:)(2)

行列に対する演算の実行

  1. 行列に対する簡単な演算のほとんどは、整数に対する演算と同じように実行できます。サイズが同じ2つの行列を乗算するには、次のように記述します。
    a = [1,2;3,4]
    b = [2,3;4,5]
    
    a*b

    結果は次のとおりです。

    次のようにa.*bを使用すると、エントリ同士を乗算できます。

    他の演算の詳細については、算術演算のヘルプドキュメントをご参照ください。

  2. transposeなどの組み込み関数で行列を使用するには、次のように記述します。
    transpose([1,5,2;6,2,3])

    また、transposeの代わりに.'を使用することもできます。どちらの方法でも次に示す同じ結果が返されます。

    他の行列演算については、インストール先ディレクトリのTutorialsフォルダにあるスクリプトsimple_matrix.omlをご参照ください。