文档

coder.isRowMajor

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

语法

coder.isRowMajor
coder.isRowMajor (arg)

描述

例子

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

例子

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

例子

全部折叠

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

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

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

通过使用查询函数,生成的代码用于addMatrixRouted为任意一种数组布局选择提供高效的内存访问。

考虑函数喷火

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

生成代码:

codegen喷火

运行MEX功能,输入:

foo_mex

输入参数

全部折叠

变量来查询数组布局。

例子:coder.isRowMajor (x);

限制

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

提示

  • 在代码生成之外,coder.isRowMajor总是假的。

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

在R2018a中引入

这个话题有用吗?