Main Content

coder.isRowMajor

Determine whether the current function or variable uses row-major layout

Description

example

coder.isRowMajor解析为真在生成的代码中如果咕咕叫ent function uses row-major array layout. Use the function as the expression in control flow (if,else,switch) statements.

example

coder.isRowMajor (arg)resolves as true if the current variable uses row-major array layout.

Examples

collapse all

To query the array layout of a function at compile time, usecoder.isRowMajororcoder.isColumnMajor. This query can be useful for specializing your generated code when it involves row-major and column-major functions. For example, consider this function:

functionS = addMatrixRouted(A,B)ifcoder.isRowMajor%execute this code if row majorS = addMatrix_OptimizedForRowMajor(A,B);elseifcoder.isColumnMajor%execute this code if column majorS = addMatrix_OptimizedForColumnMajor(A,B);end

The functionaddMatrixRoutedbehaves differently depending on whether it uses row-major layout or column-major layout. The layout that the function uses, for example, can depend on whether it is called from a function that containscoder.rowMajororcoder.columnMajor. WhenaddMatrixRouteduses row-major layout, it calls theaddMatrix_OptimizedForRowMajorfunction, which has efficient memory access for row-major data. When the function uses column-major layout, it calls a version of theaddMatrixfunction optimized for column-major data.

By using the query functions, the generated code foraddMatrixRoutedprovides efficient memory access for either choice of array layout.

Consider the functionfoo:

functionfoo coder.rowMajor; x = magic(3);ifcoder.isRowMajor (x) fprintf('This will always be displayed in generated code.\n');elsefprintf('This will never be displayed in generated code.\n');endend

Generate code:

codegenfoo

To run the MEX function, enter:

foo_mex

Input Arguments

collapse all

Variable to query for array layout.

Example:coder.isRowMajor (x);

Limitations

  • You cannot query the array layout of a structure field or property.

Tips

  • Outside of code generation and simulation,coder.isRowMajoris always false.

  • Ifcoder.isRowMajoralways resolves to true for your code, other branches in theifstatement are ignored by the code generator. Otherwise, one instance of the current function is created for each array layout.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Introduced in R2018a