Main Content

coder.rowMajor

関数またはクラスの行優先の配列レイアウトを指定

説明

coder.rowMajor は、生成されたコードで現在の関数により使用されるデータに行優先の配列レイアウトを指定します。クラス コンストラクターに配置すると、coder.rowMajor はクラスで使用されるデータに行優先のレイアウトを指定します。

メモ

コード生成では、既定で列優先の配列レイアウトが使用されます。

すべて折りたたむ

関数本体に coder.rowMajor を挿入して、関数に行優先の配列レイアウトを指定します。

myFunction はコードの最上位レベルの関数であるとします。アプリケーションでは、行優先の配列レイアウトでの行列の加算と列優先のレイアウトでの行列の乗算を実行できなければなりません。

function S = myFunction(A,B)
    %#codegen
    % check to make sure inputs are valid
    if size(A,1) ~= size(B,1) || size(A,2) ~= size(B,2)
        disp('Matrices must be same size.');
        return;
    end

    % make both matrices symmetric
    B = B*B';
    A = A*A';

    % add matrices
    S = addMatrix(A,B);
end

行列加算の関数 addMatrix を記述します。coder.rowMajor を使用して addMatrix の行優先のレイアウトを指定します。

function S = addMatrix(A,B)
    %#codegen
    S = zeros(size(A));
    coder.rowMajor; % specify row-major array layout
    for i = 1:size(A,1)
       for j = 1:size(A,2)
           S(i,j) = A(i,j) + B(i,j);
       end
    end
end

myFunction のコードを生成します。codegen コマンドを使用します。

codegen myFunction -args {ones(10,20),ones(10,20)} -config:lib -launchreport

コード ジェネレーターは、行優先の配列レイアウトを使用する addMatrix のコードを生成します。ただし、最上位レベルの関数からの行列乗算は既定のレイアウトである列優先を使用します。

ヒント

  • 生成されたコードですべての関数に行優先の配列レイアウトを指定するには、codegen -rowmajor オプションを使用します。

  • 行優先の関数内から呼び出されるその他の関数は、行優先の指定を継承します。ただし、呼び出された関数のいずれかに独自の異なる coder.columnMajor 呼び出しが含まれる場合、それに合わせてコード ジェネレーターは配列のレイアウトを変更します。行優先の関数と列優先の関数が、独自の配列レイアウトが指定されていない同じ関数を呼び出した場合、コード ジェネレーターは関数の行優先バージョンと列優先バージョンを生成します。

  • コード生成およびシミュレーションの範囲外では、coder.rowMajor は無視されます。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2018a で導入