文档

coder.isRowMajor

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

描述

例子

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

例子

coder.isRowMajor (参数如果当前变量使用行主数组布局,则解析为true。

例子

全部折叠

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

函数S = addmatrixrouting (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为任意一种数组布局选择提供高效的内存访问。

考虑函数喷火

函数foo coder.rowMajor;X =魔法(3);如果coder.isRowMajor (x)流(这将始终显示在生成的代码中。\n);其他的流('这将永远不会显示在生成的代码。\n');结束结束

生成代码:

codegen喷火

要运行MEX功能,输入:

foo_mex

输入参数

全部折叠

变量来查询数组布局。

例子:coder.isRowMajor (x);

限制

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

提示

  • 除了代码生成和模拟之外,coder.isRowMajor总是假的。

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

在R2018a中介绍