文档

coder.isColumnMajor

确定当前函数或变量是否使用列主布局

语法

coder.isColumnMajor
coder.isColumnMajor (arg)

描述

例子

coder.isColumnMajor如果当前函数使用列主数组布局,则在生成的代码中解析为true。使用函数作为控制流中的表达式(如果,其他的,开关)语句。

例子

coder.isColumnMajor (参数)如果当前变量使用列主数组布局,解析为true。

例子

全部折叠

若要在编译时查询函数的数组布局,请使用coder.isColumnMajorcoder.isRowMajor。当生成的代码涉及主行函数和主列函数时,此查询对于专门化生成的代码很有用。例如,考虑这个函数:

函数S = addMatrixRouted (A, B)如果coder.isRowMajor如果行主行,则执行此代码S = addMatrix_OptimizedForRowMajor (A, B);elseifcoder.isColumnMajor如果列是主列,则执行此代码S = addMatrix_OptimizedForColumnMajor (A, B);结束

这个函数addMatrixRouted根据它是使用行主布局还是列主布局,其行为会有所不同。例如,函数使用的布局取决于是否从包含的函数调用它coder.rowMajorcoder.columnMajor。当addMatrixRouted使用行主布局,则调用addMatrix_OptimizedForRowMajor函数,该函数对行主数据具有高效的内存访问。当该函数使用列主布局时,它调用addMatrix针对列为主数据优化的函数。

通过使用查询函数,生成的代码为addMatrixRouted为阵列布局的任一选择提供有效的内存访问。

考虑到功能酒吧:

函数酒吧coder.columnMajor;x =魔法(3);如果coder.isColumnMajor (x)流('这将总是在生成的代码中显示。\n');其他的流('这将永远不会在生成的代码中显示。\n');结束结束

生成代码:

codegen酒吧

要运行MEX函数,请输入:

bar_mex

输入参数

全部折叠

变量来查询数组布局。

例子:coder.isColumnMajor (x);

限制

  • 不能查询结构字段或属性的数组布局。

提示

  • 代码生成器默认使用列主布局。

  • 在代码生成之外,coder.isColumnMajor总是正确的。

  • 如果coder.isColumnMajor的其他分支始终解析为true如果语句被代码生成器忽略。否则,将为每个数组布局创建当前函数的一个实例。

介绍了R2018a

这个话题有用吗?