MATLAB は行列を反復処理する

Ammar Ali 2023年1月30日
  1. MATLAB で線形インデックスを使用して行列を反復処理する
  2. MATLAB で arrayfun() 関数を使用して行列を反復処理する
  3. MATLAB で cellfun() 関数を使用して行列を反復処理する
MATLAB は行列を反復処理する

このチュートリアルでは、MATLAB の線形インデックス、arrayfun()、および cellfun() 関数を使用して行列を反復処理する方法について説明します。

MATLAB で線形インデックスを使用して行列を反復処理する

マトリックスには、2 種類のインデックスがあります。1つは、マトリックスに存在する要素にアクセスするために行と列の番号を指定する必要がある行と列のインデックスです。2つ目は、線形インデックスのみを使用して要素にアクセスできる線形インデックスです。たとえば、以下のコードを参照してください。

m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)

出力:

m =

     2     6     1
    17    19    18


row_col_index =

    18


linear_index =

    18

上記のコードでは、両方の種類のインデックスを使用して、行列の最後の要素にアクセスします。線形インデックスでは、要素は最初の列から始まるマトリックスに存在します。したがって、最初の列から数えると、最後の要素は 6 番目のインデックスに存在します。行と列のインデックスを使用して行列を反復するには、2つのループが必要ですが、線形インデックスの場合は、1つのループのみが必要です。たとえば、線形インデックスを使用して行列を反復処理してみましょう。以下のコードを参照してください。

m = [2 6 1; 17 19 18];
for i = 1:numel(m)
    disp(m(i))
end

出力:

     2

    17

     6

    19

     1

    18

上記では、numel() 関数を使用して、指定された行列に存在する要素の総数を取得しました。また、ループと線形インデックスを使用して、コマンドウィンドウに各要素を 1つずつ表示しました。コマンドウィンドウに要素が表示される順序に注意してください。これは、線形インデックスの順序です。

MATLAB で arrayfun() 関数を使用して行列を反復処理する

関数があり、それを配列または行列の各要素に適用する場合、そのための 1つの方法は、上記のように各要素を反復処理して各要素に関数を適用することですが、別の簡単な方法があります。arrayfun() を使用して、指定された関数を配列または行列の各要素に適用できます。以下のコードを参照してください。

output = arrayfun(myFunction , array);

上記のコードでは、arrayfun()myFunction に格納されている関数を配列の各要素に 1つずつ適用し、その結果を変数 output に格納しています。たとえば、定義された関数を行列の各要素に適用してみましょう。以下のコードを参照してください。

myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)

出力:

myMatrix =

     0    90
   180   270


output =

    1.0000   -0.4481
   -0.5985    0.9844

出力からわかるように、関数 cos(x) が行列の各要素に適用され、結果は変数 output に格納されます。arrayfun() の詳細については、このリンクを確認してください。

MATLAB で cellfun() 関数を使用して行列を反復処理する

関数があり、それを特定のセルの各要素に適用する場合、そのための 1つの方法は、上記のように各要素を反復処理して各要素に関数を適用することですが、別の簡単な方法があります。cellfun() を使用して、指定された関数をセルの各要素に適用します。以下のコードを参照してください。

output = cellfun(myFunction , myCell);

上記のコードでは、cellfun()myFunction に格納されている関数をセルの各要素に 1つずつ適用し、その結果を変数 output に格納しています。たとえば、定義された関数をセルの各要素に適用してみましょう。以下のコードを参照してください。

myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)

出力:

myCell =

  1×4 cell array

    {[0]}    {[90]}    {[180]}    {[270]}


output =

         0    0.8940   -0.8012   -0.1760

出力からわかるように、関数 sin(x) がセルの各要素に適用され、結果が変数 output に格納されます。cellfun() の詳細については、このリンクを確認してください。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - MATLAB Matrix