文档

coder.isColumnMajor

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

描述

例子

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的其他分支总是解析为真如果语句将被代码生成器忽略。否则,将为每个数组布局创建当前函数的一个实例。

介绍了R2018a