主要内容

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.rowMajoraddMatrix 指定行优先布局。

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® 代码。

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2018a 中推出